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://2334495.blog.hexun.com/58444731_d.html

转载于:https://www.cnblogs.com/mvv118/p/3851457.html

(转)ASP.NET-关于Container dataitem 与 eval方法介绍相关推荐

  1. 一些数据格式化-Eval( )和DataBinder.Eval(Container.DataItem, )的区别及用法

      ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldn ...

  2. DataBinder.Eval(Container.DataItem

    1.DataBinder.Eval用法 //显示二位小数 <%# DataBinder.Eval(Container.DataItem, "UnitPrice", " ...

  3. 数据绑定以及Container.DataItem绑定技巧

    数据绑定以及Container.DataItem绑定技巧 灵活的运用数据绑定操作          绑定到简单属性:<%#UserName%>          绑定到集合:<asp ...

  4. 揭秘ASP.NET 2.0的Eval方法(转)

    实际上Eval方法是TemplateControl的,而System.Web.UI.Page和System.Web.UI.UserControl都继承于TemplateControl,所以我们可以在P ...

  5. 数据绑定以及Container.DataItem几种方式与用法分析 收藏

    数据绑定以及Container.DataItem几种方式与用法分析 收藏 灵活的运用数据绑定操作         绑定到简单属性:<%#UserName%>         绑定到集合:& ...

  6. 揭秘ASP.NET 2.0的Eval方法

    揭秘ASP.NET 2.0的Eval方法 iTbulo.COM 2006-4-3 赛迪博客[ 385] [我要投稿] 实际上Eval方法是TemplateControl的,而System.Web.UI ...

  7. asp.net TemplateField模板中的Bind方法和Eval方法

    TemplateField模板中为了能够有限制的或者取出数据库中某列的值时,可以用Bind和Eval方法来实现.以下是Bind方法的格式,Eval的格式也是和Bind一样的. Bind("列 ...

  8. databinder.eval绑定数据的时候显示html标签,c#教程之基于DataBinder.Eval方法的数据绑定...

    https://www.xin3721.com/eschool/ 10.2.5基于DataBinder.Eval方法的数据绑定 为将绑定的数据按指定数据类型转化为字符串,可以使用String.Form ...

  9. DataBinder.Eval方法研究

    DataBinder.Eval方法: 用途:在运行时使用反射来分析和计算对象的数据绑定表达式 重载列表如下: public static object Eval(object container,st ...

最新文章

  1. 手机打开python文件_使用python在计算机和手机之间通过wifi进行简单的文件传输...
  2. WSL1 升级为 WSL2
  3. sizeof()与_countof()用法
  4. pandas 在某个列表中的值 筛选列_Pandas学习笔记(二)
  5. 工作所思--IT新人
  6. psp3000 刷机
  7. ANSYS网格划分简述
  8. 使用videojs播放rtmp视频
  9. java支付宝提现功能,单笔转账到支付宝账户
  10. 基础 | 并发编程 - [LongAdder Striped64]
  11. 小程序—这款工具把加速计、陀螺仪、设备方向的调试痛点解决了
  12. 树莓派蓝牙连接就断开
  13. 用python计算圆柱体的体积和表面积_Java圆柱体表面积和体积计算代码实例
  14. LeetCode——6. Z 字形变换
  15. 债券价格和到期收益率的关系_债券价格、到期收益率与票面利率之间的关系是什么?...
  16. Unity全局音量控制以及音量信息存储在本地
  17. GitHub Copilot 正在“摧毁”初级开发者,已沦为编程考试作弊的神器?
  18. stm32通过wifi模块实现手机远程控制灯与舵机
  19. Spring2.5+Struts2+Hibernate3整合之五
  20. H5调用iOS和安卓方法

热门文章

  1. kibana操作elasticsearch:多字段查询(multi_match)
  2. MySQL使用覆盖索引来优化limit语句
  3. matlabpython建模_一直在用Matlab建模,现在Python很火,用学么?
  4. centos7.8源码编译安装nginx1.17.10
  5. Android基础——四大组件之Activity
  6. 基于Vue和axios的音乐播放器——悦听音乐效果展示及代码分享
  7. 常用的数据交换格式有哪些_大数据架构之数据交换平台
  8. python爬虫科研数据提取_python爬虫数据提取四之pyquery
  9. Object与equals
  10. python中sys模块有什么用_Python sys模块用法详解