一般来说Repeater 比 DataGrid 的执行效率要高,但是有人进行了测试分析后,得出的结论与想像中的完全相反,为什么?难道真的Repeater 比 DataGrid效率低下?
我们知道,绑定字段的方法有很多,一般的绑定方法<%# DataBinder.Eval(Container.DataItem, "字段") %>用DataBinder.eval 绑定不必关心数据来源(Dataread或dataset)。不必关心数据的类型eval会把这个数据对象转换为一个字符串。在底层绑定做了很多工作,使 用了反射性能。正因为使用方便了,但却影响了数据性能。再来看一下另一种绑定的方法:<%# ((DataRowView)Container.DataItem)["字段"] %>,当用dataset绑定时,DataItem其实式一个DataRowView(如果绑定的是一个数据读取器(dataread)它就是一个 IdataRecord。)因此直接转换成DataRowView的话,将会给性能带来很大提升。可见真正影响Repeater 和 DataGrid 执行效率的是绑定数据的方法。
结论:数据绑定的方法最好采用<%# ((DataRowView)Container.DataItem)["字段"] %>的方式。
使用前注意导入名称空间<%@ Import namespace="System.Data"%>喔。
我们知道,绑定字段的方法有很多,一般的绑定方法<%# DataBinder.Eval(Container.DataItem, "字段") %>用DataBinder.eval 绑定不必关心数据来源(Dataread或dataset)。不必关心数据的类型eval会把这个数据对象转换为一个字符串。在底层绑定做了很多工作,使 用了反射性能。正因为使用方便了,但却影响了数据性能。再来看一下另一种绑定的方法:<%# ((DataRowView)Container.DataItem)["字段"] %>,当用dataset绑定时,DataItem其实式一个DataRowView(如果绑定的是一个数据读取器(dataread)它就是一个 IdataRecord。)因此直接转换成DataRowView的话,将会给性能带来很大提升。可见真正影响Repeater 和 DataGrid 执行效率的是绑定数据的方法。
结论:数据绑定的方法最好采用<%# ((DataRowView)Container.DataItem)["字段"] %>的方式。
使用前注意导入名称空间<%@ Import namespace="System.Data"%>喔。