【asp.net中数据绑定】asp.net中数据绑定几种方法介绍

更新时间:2017-07-19    来源:php函数    手机版     字体:

【www.bbyears.com--php函数】

数据绑定表达式包含在 <%# 和 %> 分隔符之内,并使用 Eval 和 Bind 函数。Eval 函数用于定义单向(只读)绑定。Bind 函数用于定义双向(可更新)绑定。除了通过在数据绑定表达式中调用 Eval 和 Bind 方法执行数据绑定外,还可以调用 <%# 和 %> 分隔符之内的任何公共范围代码,以在页面处理过程中执行该代码并返回一个值。

调用控件或 Page 类的 DataBind 方法时,会对数据绑定表达式进行解析。对于有些控件,如 GridView、DetailsView 和 FormView 控件,会在控件的 PreRender 事件期间自动解析数据绑定表达式,不需要显式调用 DataBind 方法
 

在ASP.NET 中数据绑定有两种类型:单值绑定和多值绑定

 

二者的共同点:都不需要和ADO.NET同时工作

不同点: 单值绑定可以把一个变量,一个属性或者一个表达式动态的插入到一个页面中,可以用来帮助创建数据控件的模版。

多值绑定可以显示一个表的所用内容需要支持他的特殊控件(包含DataSource属性)

 

单值绑定:

常用的四种表达式:

 代码如下 <%=XX%>, 内联方式 ,可以引用C#代码
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"    
  RunAt="server">
                                   
 
   
      Product ID:       <%# Eval("ProductID") %>
      Product Name:     <%# Eval("ProductName") %>
      Category ID:      <%# Eval("CategoryID") %>
      Quantity Per Unit:<%# Eval("QuantityPerUnit") %>
      Unit Price:       <%# Eval("UnitPrice") %>
                    
 
                

<%#XXX%>, 引用.cs 文件中的代码字段

我已添加了扩展方法版本。喜欢扩展方法这种空降兵的感觉。

现在只要添加一个static的帮助类,名字随你喜欢

 代码如下

public static class Helper
{
   static object ExpHelper(Page page, Func func)
   {
      var itm = page.GetDataItem();
      return func((TEntity)itm);
   }

   public static object Eval(this Page page, Func func)
   {
      return ExpHelper(page, func);
   }
}


在页面中就可以

 代码如下 <%#this.Eval(_ => _.Name + "(" + _.Age + ")")%>


<%# Eval(xxx)%> ,需要绑定数据源
Eval 方法可计算数据绑定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的后期绑定数据表达式。在运行时,Eval 方法调用 DataBinder 对象的 Eval 方法,同时引用命名容器的当前数据项。命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如 GridView 控件中的一行。因此,只能对数据绑定控件的模板内的绑定使用 Eval 方法。


下面的控件是支持数据绑定的列表控件:

asp:RadioButtonList
asp:CheckBoxList
asp:DropDownList
asp:Listbox
通常在一个或多个 asp:ListItem 控件中定义以上每个控件中的可选项目,类似这样:

 代码如下










本文来源:http://www.bbyears.com/jiaocheng/34205.html