数据绑定以及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]["字段名"]%>
        要格式化则:
        <%#string.Format("格式",((DataRowView)Container.DataItem)["字段名"])%>
        <%#DataBinder.Eval(Container.DataItem,"字段名","格式")%>

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

当然为了方便一般使用最多的就是DataBinder类的Eval方法了.不过这样对于同时要绑定大量的数据效率要低一些

在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%>
今天又学到一种,而且微软也说这种方法的效率要比以上两种高。

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

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

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

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

这种用法其实和<%# ((DictionaryEntry)Container.DataItem).Key%>是一个道理。

绑定到DataSet、DataTable时:

<%#((System.Data.DataRowView)Container.DataItem)["字段名"]%>
<%#((System.Data.DataRowView)Container.DataItem)[索引]%>

绑定到DataReader时:
<%#((System.Data.Common.DbDataRecord)Container.DataItem)[索引]%>
<%#((System.Data.Common.DbDataRecord)Container.DataItem)["字段名"]%>

关键是Container这个东西,它比较神秘。它的名称空间是System.ComponentModel。对于它我还需要进一步理解。

初学.NET,现在在看DataGrid控件,在ItemTemplate显示数据时,
DataBinder.Eval(Container.DataItem,"Name")和Container.DataItem("Name")有什么区别?

DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。而Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jelink/archive/2006/08/25/1118839.aspx

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

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

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

  2. 数据导入HBase最常用的三种方式及实践分析

    要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase中. 常见方式为:1.使用HBase的API中的Put ...

  3. 【Python】蟒蛇绘制(三种方式+import用法)

    第一种方式不会出现函数重名问题,而第二种会.可以用第三种解决问题 方式一: #pythondraw.py import turtle #引用 绘制(海龟)库 turtle.setup(650,350, ...

  4. Go语言如何高效的进行字符串拼接(6种方式进行对比分析)

    前言 哈喽,大家好,我是asong 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?本 ...

  5. 【String拼接】Go语言字符串如何高效的进行拼接(6种方式进行对比分析)

    string类型 我们首先来了解一下Go语言中string类型的结构定义,先来看一下官方定义: // string is the set of all strings of 8-bit bytes, ...

  6. 遍历的几种方式及用法

    一.for()方法: 执行顺序:先执行条件一,再看条件一是否满足条件二的判断,如果满足则进入循环,反之则不进入循环,如果进入循环里则执行循环体里面的内容,最后再执行条件三. 例: for(条件一;条件 ...

  7. Python读取文本的三种方式对比

    1.概述 Python有三种读取文本的方式,分别是: read() readline() readlines() 2.三种方式的优缺点分析 2.1 read() 最简单的一种方法,一次性读取文件的所有 ...

  8. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例

    1. 复制图片的 4 种方式案例: 分析: 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流. 通过该原理,我们知道我们应该采用字节流. 而字节流有4种方式,所以做这个题目我们有 ...

  9. 【推荐收藏 】Python写入MySQL数据库的三种方式,最后一种方式方便又高效

    大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似 ...

最新文章

  1. glib 2.0 arm linux,glib源码安装使用方法
  2. rhel6编译ssh的src.rpm包并修改spec参数
  3. linux判断目录,文件存在等
  4. LightOJ 1088 - Points in Segments 二分
  5. 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
  6. python opencv cv.applyColorMap()函数(颜色映射)ColormapTypes【将Intel Realsense D435深度图的黑白图映射为彩色图】
  7. workbook加载文件路径_通过Workbook.XML 修复Excel自定义名称
  8. 用计算机写文章 单元备课,信息技术第一单元单元备课精要.doc
  9. linux中java 里面启动 重启 停止jar 的 shell
  10. Hibernate Session get()vs load()实例差异
  11. 八大黑盒测试方法总结【超详细】
  12. 查看风云三号VIRR地表温度(LST)日产品属性
  13. 基于 Django 的图书馆借阅系统
  14. 【延展Extension的基本使用 Objective-C语言】
  15. java面试知识点总结
  16. Spring Boot Admin
  17. 复杂UI卡顿问题没想到还能这么优化?
  18. 开源资产扫描系统-ARL资产灯塔系统
  19. 域名解析产品——HTTPDNS使用教程
  20. 把QQ聊天记录插入数据库中

热门文章

  1. asp.net用户登录 用户验证
  2. Miniconda3及pip换源(conda清华源关闭)
  3. Linux vi编辑器的使用
  4. 什么是前后端分离 前后端不分离
  5. 博客使用的CSS代码备份
  6. Linux - alias 定义的变量
  7. C++实现顺序栈的基本功能
  8. Linux和Windows的遍历目录下所有文件的方法对比
  9. shell 编程学习笔记(一)
  10. Django入门:(admin.E108