`
ljzforever
  • 浏览: 114364 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

eval,bind,container.dateitem,数据绑定的研究

阅读更多

首先,eval与bind是两个方法,都可以实现前台数据绑定
Bind方法(双向数据绑定)即能把数据绑定到控件,又能把数据变更提交到数据库。
Eval方法(单向数据绑定)它实现了数据读取的自动化,并能对绑定字段进行格式化显示,但是没有实现数据写入自动化。

比如,当有GridView、DetailsView控件的时候,Bind方法可以使控件从模板中的子控件中提取值,并将这些值传递给数据源控件。然后数据源控件将执行适当的数据库命令。所以在数据绑定控件的EditItemTemplate或InsertItemTemplate中要使用Bind函数。

其次,在进行数据绑定的时候,可以用DataBinder.Eval或者直接用Container.DataItem

DataBinder.Eval(Container.DataItem, "字段")
DataBinder.Eval(Container, "DataItem.字段")

/********************************************/

((对象类型)Container.DataItem).属性
如果是GridView,Repeat,DataList等
就是((DataRowView)Container.DataItem).Row["字段名"]
如果是SqlDataReader
就是((DbDataRecord)Container.DataItem)["字段名"]


下面就来看看这两种数据绑定的区别
Eval是通过反射的方式来获取值,而Container则是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,里面存有值。

这样看来,用Container效率应该比较高,但是有一网友做了一组这样的测试
1.<@% DataBinder.Eval(Container.DataItem, "ColumnName") %>
2.<@% DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
3.<@% DataBinder.Eval(Container, "DataItem.ColumnName", null) %>
4.<@% ((DataRowView)Container.DataItem)["ColumnName"] %>
5.<@% ((DataRowView)Container.DataItem).Row["ColumnName"] %>

来看哪个效率高,得出的结论是前三种由于用了反射,所以效率不高,但是第四种在某些情况下效率更低,第五种是一种比较合适的写法

参考的文章:
数据绑定以及Container.DataItem的具体分析
http://space.itpub.net/12639172/viewspace-481782
Eval 和 Bind 方法的区别
http://www.cnblogs.com/dupeng0811/archive/2009/03/23/1419600.html
数据绑定以及Container.DataItem几种方式与用法分析
http://www.diybl.com/course/4_webprogram/asp.net/netjs/200847/108607.html
请问Bind ,Eval有说明区别?大家来讨论讨论
http://faq.csdn.net/read/216609.html

分享到:
评论

相关推荐

    DataBinder.Eval总结

    在绑定数据时经常会用到这个句程序:&lt;%# DataBinder.Eval(Container.DataItem,"xxxx")%&gt;或者&lt;%# DataBinder.Eval(Container,"DataItem.xxxx")%&gt; 今天又学到一种,而且微软也说这种方法的效率要比以上两种高。 (...

    深入理解Asp.net中DataBinder.Eval的用法总结

    # Bind(“Subject”) %&gt; //绑定字段&lt;&#37;# Container.DataItemIndex + 1%&gt; //实现自动编号&lt;&#37;# DataBinder.Eval&#40;Container.DataItem, “[n]”&#41; %&gt;通常使用的方法(这三个性能最好)&lt;&#37;# ...

    reset_jetbrains_eval_windows.rar

    reset_jetbrains_eval_windows.rar

    设计一个简单的网页

    d&gt; 可能感兴趣的人:"&gt; ... &lt;%# DataBinder.Eval(Container.DataItem, "Name")%&gt; &lt;%# DataBinder.Eval(Container.DataItem, "Sex")%&gt; &lt;%# DataBinder.Eval(Container.DataItem, "myEmail")%&gt; &lt;/td&gt;

    AspNetPager1

    &lt;td&gt;&lt;%#DataBinder.Eval(Container.DataItem,"Activation")%&gt; &lt;td&gt;&lt;%#DataBinder.Eval(Container.DataItem, "DealerId")%&gt; &lt;td&gt;&lt;%#DataBinder.Eval(Container.DataItem, "UserId")%&gt; &lt;td&gt;&lt;%#DataBinder.Eval...

    reset_jetbrains_eval_windows.vbs

    可以无限重置

    ASP.NET完全入门

    ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短...

    ASP.NET Eval进行数据绑定的方法

    假设你已经了解ASP.NET Eval 1.1的数据绑定(特别是Container这个局部变量)的机制,这里主要分析ASP.NET Eval 2.0数据绑定做了那些改进. ASP.NET Eval 2.0 的数据绑定函数Eval&#40;&#41;简化掉了ASP.NET Eval 1.1神秘...

    Z.Expressions.Eval 4.0.68.zip

    Z.Expressions.Eval 4.0.68 包含.net3.1和 .net6的支持。不需要key,去除限制。

    trec_eval_latest.tar

    trec_eval_latest.tar trec_eval_latest.tar trec_eval_latest.tar

    reval_voc.py

    用darknet测试好的结果进行MAP值的计算程序,可以灵活使用。

    C1Wijmo-Eval_5.20143.25

    wijmo 的试用版本,可以使用30天。如果要是有破解的版本会第一时间拿来给大家分享。

    v6eval-3.3.0.tar

    v6eval ipv6 ready ipv6 ready认证用的软件 FreeBSD下使用 Supported OS versions FreeBSD/i386 7.2-RELEASE or higher Software Requirements (FreeBSD Ports) lang/p5-Expect security/p5-Digest-MD5 ...

    Codejock.ToolkitPro.MFC.Eval.17.3.0.part

    Codejock.ToolkitPro.MFC.Eval.17.3.0.part2

    Bind和Eval的区别详解

    eval()方法在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降。它一般用在绑定时需要格式化字符串的情况下。多数情况尽量少用此方法......

    AppScan_Std_9.0.3.5_Eval_Win.rar.P2P.DOWNLOAD

    AppScan_Std_9.0.3.5_Eval_Win.rar.P2P.DOWNLOAD

    stm324xg-eval_sch.zip

    stm324xg-eval_sch.zip

    Asp.net中的数据绑定Eval和Bind应用示例

    关键字: Eval (单项绑定)单项的数据绑定一般用于数据展示。Eval数据绑定应用的反射原理来返回数据。 Bind (双向绑定)双向的数据绑定除了展示数据,还要将界面数据的变动自动写回到绑定的数据源中。 Eval 单向...

    Z.Expressions.Eval.rar

    公式操作、表达式动态语句,可以考虑使用 Eval Expression。 本文件给你无限使用的特权,基于netstand2.1制作,可以方便的用于netcore 3.1和net5中 需要下列包 &lt;PackageReference Include="Microsoft.Extensions....

Global site tag (gtag.js) - Google Analytics