`
ljzforever
  • 浏览: 117512 次
  • 性别: 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

分享到:
评论

相关推荐

    ASO.NET前台页面绑定数据大全

    &lt;%# DataBinder.Eval(Container.DataItem, "ShipDate", "{0:yyyy-MM-dd}") %&gt; ``` - **数值格式化**: ```html &lt;%# DataBinder.Eval(Container.DataItem, "Price", "{0:#,##0.00}") %&gt; ``` 通过以上介绍,...

    EVAL操作集合 包含Eval()的一些常用操作 常用函数

    7. Eval()方法可以显示日期,只显示年月日,例如:&lt;%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%&gt; 8. Eval()方法可以显示货币样式,例如:&lt;%#Container.DataItem("price","{0:¥#,#...

    ASP.NET Eval 求值运算的一些用法

    - 格式化为年-月-日的日期:`&lt;%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%&gt;` - 科学计数法:`&lt;%# DataBinder.Eval(Container.DataItem, "DoubleValue", "{0:e}")%&gt;` - 固定小数点...

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

    DataBinder.Eval方法的基本语法是`&lt;%# DataBinder.Eval(Container.DataItem, "ColumnName") %&gt;`, 其中`ColumnName`是你想要绑定的数据源字段名。例如,`&lt;%# Bind("Subject") %&gt;`将绑定数据源中的"Subject"字段。 2....

    浅析DataBinder.Eval和Eval的区别

    相比之下,`DataBinder.Eval`是更通用的方法,它需要显式提供当前数据容器的引用,即`Container.DataItem`,以及需要绑定的字段名,如`DataBinder.Eval(Container.DataItem, "FieldName")`。这种方法允许在页面级别...

    ASP.NET程序中常用的三十三种代码.txt

     &lt; %# DataBinder.Eval(Container.DataItem, "数据字段1")%&gt;’ & name=’&lt;% # DataBinder.Eval(Container.DataItem, "数据字段2")%&gt;’ /&gt;  7.表格点击改变颜色 if (e.Item.ItemType == ListItemType.Item ||e....

    经典的GridView72种使用技巧

    DataBinder.Eval(Container.DataItem, "Title").ToString().Substring(0, 20) + "…" : DataBinder.Eval(Container.DataItem, "Title")%&gt; ``` #### 11. GridView一般换行与强制换行 在某些情况下,你可能...

    ASP.NET常用代码

    id='&lt;%# DataBinder.Eval(Container.DataItem, "数据字段1")%&gt;' & name='&lt;%# DataBinder.Eval(Container.DataItem, "数据字段2")%&gt;' /&gt; 7.表格点击改变颜色 if (e.Item.ItemType == ListItemType.Item ||e.Item....

    GridView 72般绝技

    &lt;%# DataBinder.Eval(Container.DataItem, "Text").ToString().Replace("\n", " ") %&gt; ``` #### 十三、GridView显示隐藏某一列 **1. 实现原理:** 通过设置`Visible`属性来控制某一列的显示或隐藏。 **...

    C#精髓-- GridView 72般绝技

    - 示例代码:在GridView的模板字段中添加 `DropDownList` 控件,并为其绑定数据源。 ```csharp 选项1 选项2 ``` #### 5. GridView和CheckBox结合 **知识点**:实现GridView中的复选框...

Global site tag (gtag.js) - Google Analytics