- 数据绑定方式
DataBound控件绑定到DataSource控件时,有2种方式:1)声明式数据绑定 2)编程式数据绑定
两者不能同时使用。如果尝试同时使用DataSource和DataSourceID属性,会引发异常。
声明式绑定:通过设置数据绑定控件(DataBound控件)和数据源控件(DataSource控件)相同的DataSourceID,关联之后会同步更新
编程式绑定:
Gridview1.DataSource=SqlDataSource1;
Gridview1.DataBind();
通过显式调用DataBind()来更新GridView的显式数据来与DataSource保持同步更新
数据绑定控件支持不同的数据源。所有实现IEnumerable、IListSource或IDataSource接口的对象都可以作为GridView控件的DataSource属性值
- 使用模板
why模板?用来格式化每一个数据项的布局和外观。通过模板,可以使用数据绑定表达式来显示数据项的值。
除了TreeView控件,其他ASP.NET 3.5 Framework中的数据绑定控件都支持模板。Repeater,DataList,FormView等控件都需要使用模板,如果不使用模板,这些控件将无法显示数据。GridView,DetailsView和Menu控件也支持模板,但不是必须的。
- 使用数据绑定表达式
数据绑定表达式是一种特殊的表达式,它直到运行时才计算出结果。在页面中可以使用,只需将表达式包含在<%#和%符号之间
数据绑定表达式在控件的DataBinding事件触发时才开始计算值。当使用声明式绑定将控件绑定到DataSource控件时,这个事件是自动触发的;如果使用编程式绑定,事件在调用DataBind()方法时触发
Eval()方法是Page类的受保护方法。实际上,Page类的Eval方法调用的是共享的静态DataBinder.Eval()方法
<%#DataBinder.Eval(Container.DataItem,"Title") %>
<%#DataBinder.Eval(Container.DataItem,"DateReleased","{0:D}") %>
在ASP.NET1.X版本中,在模板中显示数据项必须使用DataBinder.Eval()方法。在ASP.NET2.0中,为了方便编程,就提供了这种简短的语法
从技术角度来看,Eval()方法在计算表达式值时,利用反射技术来根据名称查找属性,所以使用反射会有一些性能损失
作为一种折中,可以在表达式中将数据项强制转换为某种类型以提高性能