ASP.NET 引入了一种新的声明语法 <%# %>。该语法是在 .aspx 页中使用数据绑定的基础。所有数据绑定表达式都必须包含在这些字符中。
A. 单值绑定<% # %>
公有或受保护的变量
<%# strName %>
<%# strName %>
方法结果:
<%# getName()%>
表达式:
<%# 1+ 3*20 %> <%# “tong” + “qing” %>
<%# Request.Browser.Browser%>
集合:
<asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
注:必须有父控件调用DataBind()方法,如Page.DataBind() 与 Control.DataBind()
调用 Page.DataBind 方法后,所有数据源都将绑定到它们的服务器控件。在显式调用 Web 服务器控件的 DataBind 方法或在调用页面级的 Page.DataBind 方法之前,不会有任何数据呈现给控件。通常,可以从 Page_Load 事件调用 Page.DataBind(或 DataBind)。
B. 重复值绑定
这些控件可以将其 DataSource 属性绑定到支持 IEnumerable、ICollection 或 IListSource 接口的任一集合。
1、 数据绑定列表控件
DropDownList控件列表控件都公开 DataSource 和 DataMember 属性,这些属性用于绑定到集合。
2、Repeater 控件
Repeater 控件是模板化的数据绑定列表。Repeater 控件是“无外观的”;即,它不具有任何内置布局或样式。因此,您必须在控件的模板中明确声明所有 HTML 布局标记、格式标记和样式标记。
3、DataList 控件
DataList 类是一个多功能的、模板化的数据绑定列表。您可以通过修改模板来自定义此控件。与 Repeater 控件不同,DataList 支持定向呈现,并且可以根据需要在运行时呈现到 HTML 表中。
4、DataGrid 控件
DataGrid 控件是一个多功能的、多列的数据绑定网格。要自定义 DataGrid 中各列的布局,您可以将列类型设置为“模板”,然后修改列的模板。DataGrid 控件无需模板即可进行呈现,这使得该控件成了用于报告方案的理想控件。DataGrid 还支持根据列和根据按钮列进行选择、编辑、删除、分页和排序。
C. 数据源
1、 DataSet 类(DataTable)
DataSet 包含数据的完整表示形式,其中包括表结构、表之间的关系和数据的排序。DataSet 类非常灵活,可以将数据库中任何种类的信息存储到扩展标记语言 (XML) 文件中。DataSet 类是无状态的;即,您无需连接到服务器连接资源即可将这些类从客户端传递到服务器。
2、 DataReader 类
如果您只需显示(而不更改)要呈现的数据,DataReader 类可能是更好的解决方法。例如,对于 DropDownList 控件,最好使用 DataReader,因为 DataReader 是只进数据游标。
3、 Array、ArrayList、List 数组
D. 绑定表达式
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>
<%# ((DataRowView)Container.DataItem)["ColumnName"] %>
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %>
<%# Eval("ColumnName ") %>
注:关于asp 2.0中的Eval实现 Eval在Page类中实现,其本质如
protected object Eval(string expression)
{
return DataBinder.Eval(GetDataItem(), expression);
}
protected object Eval(string expression, string format)
{
return DataBinder.Eval(GetDataItem(), expression, format);
}
1、第4,5种在使用columnIndex中无疑是最快的
2、第4,5种在使用列名大小写匹配时无疑也是最快的
3、当4,5种在使用列名大小写不匹配时,同第一种相比结果很微妙
4、 但是结论3 这种比较是基于DataRowView对DataBinder.Eval调用的优化(即实现了ICustomTypeDescriptor) 接口而言的,对于没有实现该接口的数据集合绑定,如一个自定义的对象集合,无疑,asp数据4,5两种的调用的模式还是推荐之列的
2、第4,5种在使用列名大小写匹配时无疑也是最快的
3、当4,5种在使用列名大小写不匹配时,同第一种相比结果很微妙
4、 但是结论3 这种比较是基于DataRowView对DataBinder.Eval调用的优化(即实现了ICustomTypeDescriptor) 接口而言的,对于没有实现该接口的数据集合绑定,如一个自定义的对象集合,无疑,asp数据4,5两种的调用的模式还是推荐之列的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论