DataBinder.eval方法有两种原型:public static Object Eval(object contanier,String expr);public static String Eval(object contanier,String expr,String  format);用DataBinder.eval 绑定不必关心数据来源。不必关心数据的类型eval会把这个数据对象转换为一个字符串。在底层绑定做了很多工作,使用了反射性能。正因为使用方便了,但却影响了数据性能.
来看下<%# DataBinder.Eval(Container.DataItem, "字段名") %>。当于dataset绑定时DataItem其实是一个DataRowView(如果绑定的是一个数据读取器datareader)它就是一个IdataRecord。)因此直接转换成DataRowView的话,将会给性能带来很大提升 <%# ctype(Container.DataItem,DataRowView).Row("字段名") %> 对数据的绑定建议使用<%# ctype(Container.DataItem,DataRowView).Row("字段名") %>。数据量大的时候可提高几百倍的速度。.NET对象都是强类型,所以必须强制转换。DataBinder类的Eval静态方法模糊了控件的数据源中的元素类型之间的区别,不过由于自动类型推段和转换。对相应的反应速度变慢了。

解决方案 »

  1.   

    DataBinder.Eval 方法在运行时使用反射来分析和计算对象的数据绑定表达式。
    下面的示例说明如何以声明方式使用 Eval 方法以绑定到 Price 字段。本示例使用的容器语法假定您正在使用一个列表 Web 服务器控件。格式参数将数字格式化为将由请求浏览器显示的区域设置特定的货币字符串。
    <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
      

  2.   

    DataBinder.eval方法见楼上
    '<%# DataBinder.Eval(Container.DataItem,"CategoryName") %>'
    ''表示是一个字符串,这个不用说了吧:)比如说Text='字符串'
    <%# %>表示要嵌入代码,比如说C#代码DataBinder.Eval(Container.DataItem,"CategoryName") 得到字段CategoryName的值
    DataBinder.eval方法见楼上两位