程 序 人 生

[每个人都是工程师,书写着属于自己的人生代码!--林海]
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

字段绑定的效率问题

Posted on 2006-10-21 10:58  林海  阅读(312)  评论(0编辑  收藏  举报
一般来说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"%>喔。