数据绑定以及Container.DataItem几种方式与使用方法分析[通俗易懂]

数据绑定以及Container.DataItem几种方式与使用方法分析[通俗易懂]灵活的运用数据绑定操作绑定到简单属性:绑定到集合:'runat="server">绑定到表达式:绑定到方法返回值:绑定到Hashtable:绑定到Arr

大家好,又见面了,我是你们的朋友全栈君。

灵活的运用数据绑定操作
        绑定到简单属性:<%#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。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155134.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 无锁编程技术及实现「建议收藏」

    无锁编程技术及实现「建议收藏」1.基于锁的编程的缺点 多线程编程是多CPU系统在中应用最广泛的一种编程方式,在传统的多线程编程中,多线程之间一般用各种锁的机制来保证正确的对共享资源(share resources)进行访问和操作。在多线程编程中只要需要共享某些数据,就应当将对它的访问串行化。比如像++count(count是整型变量)这样的简单操作也得加锁,因为即便是增量操作这样的操作,,实际上也是分三步进行的:读、改、写(回…

  • Python上位机软件图形界面实战(2)[通俗易懂]

    Python上位机软件图形界面实战(2)[通俗易懂]前言上位机图形界面开发设计用QTDesigner就可以了。但是qtdesigner生成的是.ui文件,我们需要将.ui转换为我们用的py文件。这里就要用到昨天设置Pyuic来生成。由于只是初步开发所以设计的界面没有美化,只是体验一下功能就可以了。1Pyuic的修改今天做的时候才发现昨天的Pyuic没设置好。下来在昨天的基础上只修改这两行。-mPyQt5.uic.pyuic$F…

  • 2021年学习Java还有意义吗?

    2021年学习Java还有意义吗?Java编程语言今年已经26岁了,按照软件开发标准来说,这是非常古老的语言了。所以很多编程初学者想知道Java在2021年是否仍然有意义?是否值得学习?在那些还没有决定该专注于哪种语言和技术栈的人看来,Java正面临着来自JavaScript、Python和Kotlin之类语言的挑战。但这是否意味着Java在软件开发领域的受欢迎程度、相关性和实际重要性正在下降,转而学习其他技术将是一个更明智的选择?绝对不是。尽管你偶尔会看到一些观点,预示着Java日渐式微,但事实上,…

  • CRM客户关系管理系统(十二)

    CRM客户关系管理系统(十二)

  • extern用法总结!

    extern用法总结!

    2021年11月28日
  • oracle用户更改密码_修改system用户密码

    oracle用户更改密码_修改system用户密码前几天通过plsql登录数据库时,提示密码过期,需要修改密码,那就修改呗。改完过了会,再登录,发现用户被锁了。那就去解锁下吧。一、登录数据库服务器suoracle;sqlplus”/assysdba”;alteruserxxaccountunlock;重新登,发现还是锁着的,怀疑是有应用服务一直在尝试连数据库导致锁定,遂先把服务给停掉了。二、查看用户状态…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号