Container.DataItem几种方式.

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

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

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

很有用的,这样可以在前台页面做好多事情了。

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

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

这种用法其实和

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

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

是一个道理。

关键是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

DataItem,gridview,repeater数据控件数据绑定的更多相关文章

  1. Repeater数据控件的两个重要事件ItemDataBound 和 ItemCommand

    1 ItemDataBound:数据绑定的时候(正在进行时)发生. 2 ItemCommand :用来响应Item模板中的控件的事件. 如下代码 aspx代码: [html] view plain c ...

  2. ASP.NET-----Repeater数据控件的用法总结(转)

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  3. [转载]ASP.NET-----Repeater数据控件的用法总结

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  4. 初始ASP.NET数据控件GridView

    使用GridView控件绑定数据源 GridView控件个人认为就是数据表格控件,它以表格的形式显示数据源中的数据.每列表示一个字段,每行表示一条记录.     GridView控件支持在页面有一下功 ...

  5. WPF中TreeView控件数据绑定和后台动态添加数据(一)

    数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...

  6. ASP.NET Web数据控件

    ASP.NET Web数据控件 1.数据控件简介 这包括数据源控件和格式设置控件,前者使您可以使用 Web 控件访问数据库中的数据,后者使您可以显示和操作ASP.NET 网页上的数据.  2.数据控件 ...

  7. ASP.NET数据控件

    数据服务器控件就是能够显示数据的控件,与那些简单格式的列表控件不同,这些控件不但提供显示数据的丰富界面(可以显示多行多列数据并根据用户定义来显示),还提供了修改.删除和插入数据的接口. ASP.NET ...

  8. 浅析五大ASP.NET数据控件

    转自:http://kb.cnblogs.com/page/69207/ 摘要:ASP.NET中有不少的控件,在这当中有一部分是用来处理数据的控件.在这里我们正要讨论的就是ASP.NET数据控件,希望 ...

  9. 快速构建Windows 8风格应用4-FlipView数据控件

    原文:快速构建Windows 8风格应用4-FlipView数据控件 本篇博文主要介绍为什么使用FlipView控件.什么是FlipView控件.如何使用FlipView控件和FlipView控件最佳 ...

随机推荐

  1. c语言->和 .

    ->和 . 都是用于访问结构数据的符号. struct point { int x; int y; }; . 符号是在表达式中引用某个特定结构中的成员: 结构名.成员 例如: struct po ...

  2. mysql 命令(一)

    1. 函数向日期添加指定的时间间隔 DATE_ADD(date,INTERVAL expr type)eg:DATE_ADD(CURDATE(),INTERVAL 1 MONTH) //在当前时间加一 ...

  3. Oracle 优化 - CPU 问题

    作为 OLTP 应用,一般不太有 CPU 问题,比较少 - 毕竟大多数问题都是 IO 引起:但是偶尔也会有. 问题判断 很简单 - OS 出现 CPU 很高的问题,持续高于 90% 应用可能会表现慢 ...

  4. redis 配置应用(摘)

    Redis可以在没有配置文件的情况下通过内置的配置来启动,但是这种启动方式只适用于开发和测试. 合理的配置Redis的方式是提供一个Redis配置文件,这个文件通常叫做redis.conf. redi ...

  5. Unity中有两种Animation Clip

    http://blog.csdn.net/zzxiang1985/article/details/51291861 在Unity中,我们有两种方法创建Animation Clip. 一种(后面简称方法 ...

  6. C++学习之:括号匹配与栈的使用

    #include <stack> using std::stack ; 变量定义: stack<T>  stackName ; 成员函数: 成员函数 功能 bool  empt ...

  7. BZOJ4049 [Cerc2014] Mountainous landscape

    首先对于一个给定的图形,要找到是否存在答案非常简单... 只要维护当然图形的凸包,看一下是否有线段在这条直线上方,直接二分即可,单次询问的时间复杂度$O(logn)$ 现在用线段树维护凸包,即对于一个 ...

  8. PHP投票系统

    1.投票页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  9. SQLSERVER存储过程基本语法

    一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @us ...

  10. Java语言概述

    1.1 基础知识 ·第一代语言 打孔机--纯机器语言 ·第二代语言 汇编 ·第三代语言 C.Pascal.Fortran面向过程的语言 C++面向过程/面向对象 Java跨平台的纯面向对象的语言 .N ...