eval("")和DataBind.Eval(Container.DataItem,"")的区别于联系 container.dataitem

eval_r( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定

bind是双向绑定,但需数据源可更改才能用

ASP.NET2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.eval_r(Container.DataItem,fieldname)简化为eval_r(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。由于这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于Page(页面)层。当然,ASP.NET2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。
下面的例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模板(ItemTemplate)中的Image、Label和HyperLink控件。

<asp:DataList ID= "DataList1 " RepeatColumns= "5 " Width= "600 "runat= "server " DataSourceID= "ObjectDataSource1 ">
 <ItemTemplate>
  <asp:HyperLink ID= "HyperLink1 " runat= "server " NavigateUrl='<%# eval_r( "PhotoID ","PhotoFormViewPlain.aspx?ID={0} ") %> '>
  <asp:Image ID= "Image1 " Runat= "server " ImageUrl='<%# eval_r( "FileName ", "images/thumbs/{0} ")%> ' /></asp:HyperLink>
  <asp:Label ID= "CaptionLabel " runat= "server " Text='<%# eval_r( "Caption ") %>' />
 </ItemTemplate>
</asp:DataList><br />
<asp:ObjectDataSource ID= "ObjectDataSource1 " runat= "server "TypeName= "DataComponentTableAdapters.PhotosTableAdapter "SelectMethod= "GetPhotosForAlbum ">

  数据绑定也可以作为控件的主题定义(themedefinition)的一部分,这样我们就可以通过改变主题来随意地改变模板化控件的布局和外观。但是Theme(主题)模板中只能使用Eval(或者后面讨论的Bind)。绑定到任意的用户代码是被禁止的。

【转】据绑定之 DataBinder.eval_r(Container.DataItem )


绑定到简单属性:<%#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]["字段名"]%>

要格式化则:

eval(
<%#string.Format("格式",((DataRowView)Container.DataItem)["字段名"])%>

<%#DataBinder.eval_r(Container.DataItem,"字段名","格式")%>



绑定到DataReader:

<%#((IDataReader)Container.DataItem).字段名%></FONT>

=======================

绑定到简单属性:<%#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_r(Container.DataItem,"字段名","格式")%>

绑定到DataReader:

<%#((IDataReader)Container.DataItem).字段名%>viewplaincopy to clipboardprint?
<FONTsize=3><P><FONTsize=3>一、DataBinder.Eval的基本格式灵活的运用数据绑定操作</FONT></P><P&gt;<FONTsize=3>在绑定数据时经常会用到这个句程序:<%#DataBinder.eval_r(Container.DataItem,"xxxx")%>或者<%#DataBinder.eval_r(Container,"DataItem.xxxx")%>
今天又学到一种,而且微软也说这种方法的效率要比以上两种高。</FONT></P><P><FONTsize=3><%#((DataRowView)Container.DataItem)["xxxx"]%></FONT></P><P><FONTsize=3>很有用的,这样可以在前台页面做好多事情了。</FONT></P><P><FONTsize=3>还要记住要这样用必须要在前台页面导入名称空间System.Data,否则会生成错误信息。</FONT></P><P><FONTsize=3><%@ Importnamespace="System.Data" %></FONT></P><P><FONTsize=3>这种用法其实和<%#((DictionaryEntry)Container.DataItem).Key%>是一个道理。</FONT></P><P><FONTsize=3>绑定到DataSet、DataTable时:</FONT></P><P><FONTsize=3><%#((System.Data.DataRowView)Container.DataItem)["字段名"]%&gt;
<%#((System.Data.DataRowView)Container.DataItem)[索引]%></FONT></P><P>
<FONTsize=3>绑定到DataReader时:
<%#((System.Data.Common.DbDataRecord)Container.DataItem)[索引]%>
<%#((System.Data.Common.DbDataRecord)Container.DataItem)["字段名"]%></FONT></P><P><FONTsize=3>关键是Container这个东西,它比较神秘。它的名称空间是System.ComponentModel。对于它我还需要进一步理解。</FONT></P><P><FONTsize=3>初学.NET,现在在看DataGrid控件,在ItemTemplate显示数据时,
DataBinder.eval_r(Container.DataItem,"Name")和Container.DataItem("Name")有什么区别?</FONT></P><P>
<FONTsize=3>DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,</FONT></P><P><FONTsize=3>但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。</FONT&gt;</P><P><FONTsize=3>而Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,</FONT></P><P><FONTsize=3>其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),</FONT></P><P><FONTsize=3>在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。</FONT></P><P><FONTsize=3>如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView。</FONT></P&gt;</FONT>

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/236821.html

更多阅读

手机电阻屏、电容屏和压电式触摸屏的区别 四线电阻触摸屏

手机电阻屏、电容屏和压电式触摸屏的区别  从苹果iPodtouch问世开始,电容屏就悄悄变成了高端产品的标配,而使用电阻屏的产品,或多或少都会被批判一番。电容屏触控顺滑、多点触摸、敏感度更高、定位更准确、响应速度更快、显示更清

数码单反相机和胶片单反相机的区别 单反 数码相机区别

2011-05-25 08:40:50| 分类: 摄影教程 | 标签: |字号大中小 订阅数码单反相机和胶片单反相机的区别主要包括成像方式不同、存储介质的不同、以及操作功能是否数字化等。胶片单反相机的感光元件是胶片,而数码单反相机的感光元件则是可以

DIY梦工厂 天使眼和恶魔眼大灯的区别 天使眼和恶魔眼哪个好

《日志标题》天使眼和恶魔眼大灯的区别在汽车配件行业里,我们常常会听到“天使眼,恶魔眼”这两个词。它们之间有什么区别,估计只有很少人知道,甚至有很多人并不知道什么叫天使眼和恶魔眼。天使眼和恶魔眼都只是一种会发光的圆形阴极管。

声明:《eval("")和DataBind.Eval(Container.DataItem,"")的区别于联系 container.dataitem》为网友花瓣花的语言分享!如侵犯到您的合法权益请联系我们删除