浅谈.NET中的数据绑定表达式(一)
今天谈下.NET中的数据绑定表达式。
< tagprefix:tagname property ='<%#data-bindingexpression%>' runat ="server" />
或者如下: <%#data-bindingexpression%> ASP.NET 支持分层数据绑定模型,数据绑定表达式使用 Eval 和 Bind 方法将数据绑定到控件,并将更改提交回数据库。
< asp:TextBox ID ="TextBox1" runat ="server" Text ='<%#数据绑定表达式% > ' > </ asp:TextBox >< br />
注意条款:此时数据的绑顶表达式可以是一个变量 ,也可以是一个带返回值的C#或者VB.NET方法 ,还可以是某个控件的某个属性的值 ,也可以是C#或者VB.NET对象的某个字段或者属性的值 等等。当然也可以直接就是一个字符串 ,例如"hello"。
< form id ="form1" runat ="server" >
< div > <% # Eval ( "数据绑定表达式1 " ) %> <% # Eval ( " 数据绑定表达式2 " ) %> </ div > </ form > 同样遵循"一"的注意条款。
<% @PageLanguage = " C# " AutoEventWireup = " true " CodeFile = " Default2.aspx.cs " Inherits = " Default2 " %>
<! DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head runat ="server" > < title > 无标题页 </ title > < script language ="javascript" type ="text/javascript" > function GetStr() { var a; a = '' ; a = ' <%#CSharpToJavascript()%> ' // 调用c#的方法 alert(a); } </ script > </ head > < body > < form id ="form1" runat ="server" > < div > < input id ="Button1" type ="button" value ="Javascript调用c#的方法!" onclick ="GetStr()" /</div > </ form > </ body > </ html > 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,EventArgse) { Page.DataBind(); // 方法有返回值的要先绑定,才能实现Javascript调用c#的方法! } public string CSharpToJavascript() { return " Javascript调用c#的方法! " ; } } 数据绑定表达式都可以是什么类型呢? String.Format的形式一样。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三位,一次类推。
<
%#string.Format
("{0:yyyy-MM-dddddd}",Eval("stuBirth"))%
>
3, <%#((DataRowView)Container.DataItem)["字段名"] %>< %#DataBinder.Eval (Container.DataItem,"stuBirth","{0:yyyy-MM-dd}")% > <%# string.Format("{0:c}",((DataRowView)Container.DataItem)["字段名"])%> 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)["字段名"] %>的性能最好。 如果要绑定数据,最好使用: <%#((Type)Container.DataItem).成员 %> 这个也就是进行了object->对象 的类型转换,性能当然最好。能不用反射用反射就是愚蠢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |