(转)ASP.NET-关于Container dataitem 与 eval方法介绍
Container是一個(gè)數(shù)據(jù)容器,代表集合類或者dataview中的一行,而Container。dataitem代表該行的數(shù)據(jù);所有的container?? 被存
放在是一個(gè)棧堆stack中,自動(dòng)的將每一個(gè)container壓入棧堆內(nèi),最后一行記錄先進(jìn)棧,最后是第一行;(或者說棧頂是集合類的第
一個(gè)container)
GridView的每一行都是一個(gè)類型為GridViewRow的Container(容器)對(duì)象。GridViewRow有一個(gè)屬性叫DataItem,它是GridViewRow對(duì)象
綁定到的基礎(chǔ)數(shù)據(jù)對(duì)象,一般來說它就是綁定到GridView的關(guān)系數(shù)據(jù)庫數(shù)據(jù)源的一行(DataRow)。
在上面的例子中,因?yàn)镚ridViewRow(即GridView的一行)通過原先的數(shù)據(jù)綁定已經(jīng)綁定到了一個(gè)ItemInformation對(duì)象,所以
Container.DataItem可以轉(zhuǎn)換為temInformation。
總之,Container是GridView的一行,而Container.DataItem是這一行所綁定的數(shù)據(jù)。
每個(gè)DataItem代表集合類內(nèi)的一個(gè)對(duì)象,或者dataview內(nèi)的一行記錄(datarowview);
此外Eval(object,string)方法,是通過反射機(jī)制在object內(nèi)尋找string的,所以對(duì)于性能有些許損耗。
Eval(container。dataitem,“name”):表示在當(dāng)前的dataitem對(duì)象內(nèi)尋找 name的值
在使用Repeater的時(shí)候,會(huì)使用Container.DataItem.其實(shí)DataItem就是一個(gè)Object,這個(gè)Object就是Repeater的DataSource中的一個(gè)
元素。
如果 DataSourc是DataTable 那么這個(gè)DataItem就是DataRow
如果DataSource是List<Article> 那么這個(gè)DataItem就是Article。這里Article是一個(gè)自定義的類。可以先做類型轉(zhuǎn)換 然后調(diào)用
Article的方法。比用DataBinder.Eval效率高一些,因?yàn)镈ataBinder.Eval需要使用反射。
使用數(shù)據(jù)綁定的范例:
綁定到簡(jiǎn)單屬性:<%#UserName%>
綁定到集合:<asp:ListBox id="ListBox1" datasource='<%# myArray%>' runat="server">
綁定到表達(dá)式:<%#(class1.property1.ToString() + "," + class1.property2.ToString())%>
綁定到方法返回值:<%# GetSafestring(str) %>
綁定到Hashtable:<%# ((DictionaryEntry)Container.DataItem).Key%>
綁定到ArrayList:<%#Container.DataItem %>
若數(shù)組里里放的是對(duì)象則可能要進(jìn)行必要的轉(zhuǎn)換后再綁定如:
<%#((對(duì)象類型)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).字段名%>
?
轉(zhuǎn)自:http://2334495.blog.hexun.com/58444731_d.html
轉(zhuǎn)載于:https://www.cnblogs.com/mvv118/p/3851457.html
總結(jié)
以上是生活随笔為你收集整理的(转)ASP.NET-关于Container dataitem 与 eval方法介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。