All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
常用经典SQL语句大全_[SQL Server教程]
asp.net2.0创建主题外观文件
javascript实现广告页面的定时关闭_JavaScript技术_编程技术
二十一 Forms 可用性_[Html教程]
ASP.NET,2.0高级数据处理之处理Null值_.net资料_编程技术
黑客攻破SQL服务器系统的十种方法_[SQL,Server教程]
ASP.NET中散列加密密码_[Asp.Net教程]
Sql表数据操作_mssql学习_编程技术
C#教程:注册COM+服务组件应用实例
XML字符串和XML DOCUMENT的相互转换_[XML教程]
Reading number is top 10 pictures
这才是真正的人体艺术1
清纯性感的美眉2
男人们都在想什么
Ashlynn Brooke photograph of a group3
Poor doll, hand job was caught the currently in effect by his dad
Street street fighting
The woman fight much more than men
The real super beauty2
Chinese paper-cut grilles art appreciation4
性感丰满身材火爆de美女1
Download software ranking
C++编程教程第三版
Tram sex maniac 2 (H) rar bag15
Eclipse 4.2.2 For Win32
天龙八部最新服务端
Tram sex maniac 2 (H) rar bag7
Ashlynn Video1
虚拟机汉化软件
C语言教程TXT
WebService在.NET中的实战应用教学视频 → 第3集
DreamWeaver8
归海一刀 published in(发表于) 2014/1/30 1:11:35 Edit(编辑)
浅谈.NET中的数据绑定表达式_[Asp.Net教程]

浅谈.NET中的数据绑定表达式_[Asp.Net教程]

浅谈.NET中的数据绑定表达式_[Asp.Net教程]























今天谈下.NET中的数据绑定表达式。
数据绑定表达式
必须包含在<%#和%>字符之间。格式如下:












或者如下:









<%# data-binding expression %>






ASP.NET 支持分层数据绑定模型,数据绑定表达式使用 EvalBind 方法将数据绑定到控件,并将更改提交回数据库。
Eval 方法是静态单向(只读)方法,所以Eval 函数用于单向(只读)绑定,该方法采用数据字段的值作为参数并将其作为字符串返回。
Bind 方法支持读/写功能,所以Bind 函数用于双向(可更新)绑定。该方法可以检索数据绑定控件的值并将任何更改提交回数据库。
XPath 方法支持对XML类型的数据源提供支持。

数据绑定表达式都可以出现在页面的哪个位置呢?

一,可以将数据绑定表达式包含在服务器控件或者普通的html元素的开始标记中属性名/属性值对的值侧。例如:






>





注意条款:此时数据的绑顶表达式可以是一个变量,也可以是一个带返回值的C#或者VB.NET方法,还可以是某个控件的某个属性的值,也可以是C#或者VB.NET对象的某个字段或者属性的值等等。当然也可以直接就是一个字符串,例如"hello"。
如果此时的数据绑定表达式是Eval("数据库中某个表的某个字段")等,那么必须把TextBox1放在某个循环显示的控件的模板中才正确,否则会提示:Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。其实就是想让你把TextBox1放在像Repeater,DataList,GridView这样的控件的模板中。

二,数据绑定绑定表达式包含在在页面中的任何位置。例如:










  <%#Eval("数据绑定表达式1")%>
  <%#Eval("数据绑定表达式2")%>








同样遵循"一"的注意条款。
如果此时的数据绑定表达式是Eval("数据库中某个表的某个字段")等,那么必须把 <%#Eval("数据绑定表达式1")%> <%#Eval("数据绑定表达式2")%> 放在像Repeater,DataList,GridView这样的控件的模板中。

三,可以将数据绑定表达式包含在Javascript代码中,从而实现在Javascript中调用C#或者VB.NET的方法。例如:
Deafult2.aspx:






<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>



无标题页







onclick="GetStr()" /










Default2.cs:






using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();//方法有返回值的要先绑定,才能实现Javascript调用c#的方法!
}
public string CSharpToJavascript()
{
return "Javascript调用c#的方法!";
}
}




数据绑定表达式都可以是什么类型呢?
1,可以是一个变量
例如:
2,可以是服务器控件的属性值
例如:
3,可以是一个数组等集合对象
例如把一个数组绑定到列表控件,例如ListBox等,或者Repeater,DataList,GridView这样的控件等,
此时只需要把属性DataSource='<%# 数组名%>' 。
4,可以是一个表达式
例如:Person是一个对象,Name和City是它的2个属性,则数据绑定表达式可以这样写:
<%#(Person.Name + " " + Person.City)%>。
5,可以是一个方法
例如:<%#GetUserName()%>。GetUserName()是一个已经定义的C#方法,一般要求有返回值。
6,可以是用Eval,DateBind.Eval取得的数据表的字段,这个是最常见的了,不再举例。


注意:如果数据绑定表达式作为属性的值,只要数据绑定表达式中没有出现双引号,那么<%#数据绑定表达式%>的最外层用双引号或者单引号都可以。如果数据绑定表达式中出现双引号,则<%#数据绑定表达式%>的最外层最好要用单引号。

与数据库有关的数据绑定表达式的常用方法?

1,<%#DataBind.Eval(Container.DataItem,"字段名")%>
<%#DataBind.Eval(Container.DataItem,"字段名","{0:c}") %>
还有2种不常用的:
<%# DataBinder.Eval(Container,"DataItem.字段名")%>
<%# DataBinder.Eval(Container,"DataItem.字段名",{0:c})%>
Container.DataItem相当于数据库中某个表中的一行记录,而一行可以有很多列。
最后一个参数和 String.Format的形式一样。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三为,一次类推。

使用三目运算符?:的例子:
<%# DataBinder.Eval(Container.DataItem, "字段名").ToString().Trim().Length>16?DataBinder.Eval(Container.DataItem, "字段名").ToString().Trim().Substring(0,16):DataBinder.Eval(Container.DataItem, "字段名").ToString().Trim() %>

2,<%#Eval("字段名")%>
<%#Eval("字段名","{0:c}")%>
.NET 2.0新出现的一个方法。和DataBind.Eval()等价。
最后一个参数和 String.Format的形式一样。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三位,一次类推。

使用三目运算符的例子:
<%#(Eval("性别")).ToString() =="True"?"男":"女"%>
性别字段类型为:是/否(Access),bit(sql server)
使用方法调用的例子:
<%# GetUserPhoto(Eval("PhotoPath")) %>
GetUserPhoto()的定义:






string GetUserPhoto(object photoPath)
{
if (photoPath == DBNull.Value)<%#((DataRowView)Container.DataItem)["字段名"] %>

{
return "";
}
else
{
return "";
}
}




3, <%#((DataRowView)Container.DataItem)["字段名"] %>
<%# string.Format("{0:c}", ((DataRowView)Container.DataItem)["字段名"])%>
String.Format方法设定字段的显示样式。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三为,一次类推。

类型转换例子:<%# (int)((DataRowView)Container.DataItem)["字段名1"]*(int)((DataRowView)Container.DataItem)["字段名2"]%> 意思是2个字段相乘。

上面三种绑定方法的效率:Eval方法执行时候会调用DataBinder.Eval方法,DataBinder.Eval方法在运行时使用反射执行后期绑定计算,会导致性能明显下降。所以会导致性能明显下降。所以三者中<%#((DataRowView)Container.DataItem)["字段名"] %>的性能最好。

今天就先写到这里,实在太晚了,抽时间继续写XPath()。

来源:http://www.cnblogs.com/terryli













































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.