DataItem,gridview,repeater数据控件数据绑定

Container.DataItem几种方式.

在绑定数据时常常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%>html

今天又学到一种,并且微软也说这种方法的效率要比以上两种高。数据库

<%# ((DataRowView)Container.DataItem)["xxxx"]%>数组

颇有用的,这样能够在前台页面作好多事情了。性能

还要记住要这样用必需要在前台页面导入名称空间System.Data,不然会生成错误信息。spa

<%@ Import namespace="System.Data" %>orm

这种用法其实和server

<%# ((UserInfoModel)Container.DataItem).Key%>htm

<%# ((DictionaryEntry)Container.DataItem).Key%>对象

是一个道理。blog

关键是Container这个东西,它比较神秘。它的名称空间是System.ComponentModel。对于它我还须要进一步理解。
来源:http://www.cnblogs.com/huabei504/archive/2005/03/01/110618.html

 

ASP.NET-关于CONTAINER DATAITEM 与 EVAL方法介绍(转帖)

Container是一个数据容器,表明集合类或者dataview中的一行,而Container。dataitem表明该行的数据;全部的container   被存放在是一个栈堆stack中,自动的将每个container压入栈堆内,最后一行记录先进栈,最后是第一行;(或者说栈顶是集合类的第一个container)

GridView的每一行都是一个类型为GridViewRow的Container(容器)对象。GridViewRow有一个属性叫DataItem,它是GridViewRow对象绑定到的基础数据对象,通常来讲它就是绑定到GridView的关系数据库数据源的一行(DataRow)。

在上面的例子中,由于GridViewRow(即GridView的一行)经过原先的数据绑定已经绑定到了一个ItemInformation对象,因此Container.DataItem能够转换为temInformation。
总之,Container是GridView的一行,而Container.DataItem是这一行所绑定的数据。

每一个DataItem表明集合类内的一个对象,或者dataview内的一行记录(datarowview);

此外Eval(object,string)方法,是经过反射机制在object内寻找string的,因此对于性能有些许损耗。

Eval(container。dataitem,“name”):表示在当前的dataitem对象内寻找 name的值

在使用Repeater的时候,会使用Container.DataItem.其实DataItem就是一个Object,这个Object就是Repeater的DataSource中的一个元素。

若是 DataSourc是DataTable 那么这个DataItem就是DataRow

若是DataSource是List<Article> 那么这个DataItem就是Article。这里Article是一个自定义的类。能够先作类型转换 而后调用Article的方法。比用DataBinder.Eval效率高一些,由于DataBinder.Eval须要使用反射。

使用数据绑定的范例:

绑定到简单属性:<%#UserName%>
          绑定到集合:<asp:ListBox id="ListBox1" datasource='<%# myArray%>' runat="server">
          绑定到表达式:<%#(class1.property1.ToString() + "," + class1.property2.ToString())%>
          绑定到方法返回值:<%# GetSafestring(str) %>
          绑定到Hashtable:<%# ((DictionaryEntry)Container.DataItem).Key%>
          绑定到ArrayList:<%#Container.DataItem %>

          若数组里里放的是对象则可能要进行必要的转换后再绑定如:
          <%#((对象类型)Container.DataItem).属性%>

          绑定到DataView,DataTable,DataSet:
          <%#((DataRowView)Container.DataItem)["字段名"]%>或
          <%#((DataRowView)Container.DataItem).Rows[0]["字段名"]%>
          要格式化则:
          <%#string.Format("格式",((DataRowView)Container.DataItem)["字段名"])%>
          <%#DataBinder.Eval(Container.DataItem,"字段名","格式")%>

          绑定到DataReader:
          <%#((IDataReader)Container.DataItem).字段名%>

来自: http://hi.baidu.com/jiangyangw3r/blog/item/d8d27b3100a23210eac4af76.html

相关文章
相关标签/搜索