• ASP.NET界面数据绑定大大杂烩


      很久没有做Web的项目了,很多事情都已经忘记了。最近界面上要用到很多的数据绑定,由于要求很是相似,所以就用Ctrl+V做了很多的事情,可惜结果出乎意料,没有办法只能好好的研究一下数据绑定的资料了,网上的资料还真的很多,大致整理了一下,以备后用。

    说明: 

    <%@ %>表示:引用

    <%#  %>表示:必须放在绑定控件中否则无效  //asp组件

    <%=  %>表示:可以访问.cs文件中的Public 和protected成员  //html组件

    <%    %>表示:里面执行的是服务器端的代码

     

    常用数据绑定方法列表: 

    <%#Bind("Subject") %> //读写绑定字段

    <%#Eval("[n]")%>     //只读绑定字段

    <%#Container.DataItemIndex + 1%> //实现自动编号

    <%#DataBinder.Eval(Container.DataItem, "[n]") %> //只读绑定字段

    TextBox.Text=’<%#UserName%>’ //控件属性绑定

    datasource='<%#MyTable%>' //数据源绑定

    注意: Eval 方法是静态(只读)方法,该方法采用数据字段的值作为参数并将其作为字符串返回

             Bind方法支持读/写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。

     

    ASP.NET (C#) Eval Bind 的格式化 

    1.直接格式化

    <%# DataBinder.Eval(Container.DataItem, "YourDateTime","{0:yyyy-MM-dd}") %>

    <%# DataBinder.Eval(Container, "DataItem.YourDateTime","{0:yyyy-MM-dd}") %>

    <%#Eval("YourDateTime","{0:yyyy-MM-dd}") %>

     2.调用后台方法

    <%# GetFormatStr(Eval("YourDataTime")) %>

    3.String.Format()

    <%#string.Format("{0:yyyy-MM-dd}",Eval("YourDataTime")) %>

     

    备注: 

    ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem,   fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。由于这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于Page(页面)层使用。

     

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

     

    前台页面导入名称空间System.Data,否则会生成错误信息: <%@ Importnamespace="System.Data" %>

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

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


    注意事项:

    所有数据绑定表达式都必须包含在 <%# 和 %> 字符之间,而这个表达式说明的就是此代码是用作服务器端数据绑定用的。

    在进行数据绑定的时候,如果你帮到到是控件的Text属性是,你必须写成Control.Text=’ <%# UserName %>’

    使用时注意:1.注意字段名的大小写(要特别注意)。如果和查询的不一致,在某些情况下会导致比<%# DataBinder.Eval(Container.DataItem, "字段名") %>还要慢。2.如果想进一步提高速度,可采用<%# ((System.Data.DataRowView)Container.DataItem)[0] %>的方法。不过其可读性不高。

     

      文章参考: 

          http://space.itpub.net/12639172/viewspace-481782

      http://www.cnblogs.com/liuzijing688/archive/2008/03/27/1124623.html

     

     

  • 相关阅读:
    MMSkeleton 快速开始,使用 WebCam 测试
    【数据结构】用详细图文把「栈」搞明白(原理篇)
    详解|写完这篇文章我终于搞懂链表了
    如何掌握 C 语言的一大利器——指针?
    图示加代码 搞懂线性表(一)
    Kafka工作原理与工作过程
    Zookeeper的安装及集群搭建
    Linux中JDK安装
    Nginx性能调优
    Nginx配置--静态代理&反向代理&负载均衡&动静分离&虚拟主机
  • 原文地址:https://www.cnblogs.com/allanbolt/p/1623609.html
Copyright © 2020-2023  润新知