asp.net中資料繫結幾種方法介紹

來源:互聯網
上載者:User

資料繫結運算式包含在 <%# 和 %> 分隔字元之內,並使用 Eval 和 Bind 函數。Eval 函數用於定義單向(唯讀)綁定。Bind 函數用於定義雙向(可更新)綁定。除了通過在資料繫結運算式中調用 Eval 和 Bind 方法執行資料繫結外,還可以調用 <%# 和 %> 分隔字元之內的任何公用範圍代碼,以在頁面處理過程中執行該代碼並返回一個值。

調用控制項或 Page 類的 DataBind 方法時,會對資料繫結運算式進行解析。對於有些控制項,如 GridView、DetailsView 和 FormView 控制項,會在控制項的 PreRender 事件期間自動解析資料繫結運算式,不需要顯式調用 DataBind 方法
 

在ASP.NET 中資料繫結有兩種類型:單值綁定和多值綁定

 

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

不同點: 單值綁定可以把一個變數,一個屬性或者一個運算式動態插入到一個頁面中,可以用來協助建立資料控制項的模版。

多值綁定可以顯示一個表的所用內容需要支援他的特殊控制項(包含DataSource屬性)

 

單值綁定:

常用的四種運算式:

 代碼如下 複製代碼
<%=XX%>, 內聯方式 ,可以引用C#代碼
<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"    
  RunAt="server">
                                   
  <ItemTemplate>
    <table>
      <tr><td align=right><B>Product ID:</B></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align=right><B>Product Name:</B></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align=right><B>Category ID:</B></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align=right><B>Quantity Per Unit:</B></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align=right><B>Unit Price:</B></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                
  </ItemTemplate>                
</asp:FormView>

<%#XXX%>, 引用.cs 檔案中的代碼欄位

我已添加了擴充方法版本。喜歡擴充方法這種空降兵的感覺。

現在只要添加一個static的協助類,名字隨你喜歡

 代碼如下 複製代碼

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

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


在頁面中就可以

 代碼如下 複製代碼
<%#this.Eval<Student>(_ => _.Name + "(" + _.Age + ")")%>


<%# Eval(xxx)%> ,需要綁定資料來源
Eval 方法可計算資料繫結控制項(如 GridView、DetailsView 和 FormView 控制項)的模板中的後期綁定日期運算式。在運行時,Eval 方法調用 DataBinder 對象的 Eval 方法,同時引用命名容器的當前資料項目。命名容器通常是包含完整記錄的資料繫結控制項的最小組成部分,如 GridView 控制項中的一行。因此,只能對資料繫結控制項的模板內的綁定使用 Eval 方法。


下面的控制項是支援資料繫結的清單控制項:

asp:RadioButtonList
asp:CheckBoxList
asp:DropDownList
asp:Listbox
通常在一個或多個 asp:ListItem 控制項中定義以上每個控制項中的可選項目,類似這樣:

 代碼如下 複製代碼

<html>
<body>

<form runat="server">
<asp:RadioButtonList id="countrylist" runat="server">
<asp:ListItem value="C" text="China" />
<asp:ListItem value="S" text="Sweden" />
<asp:ListItem value="F" text="France" />
<asp:ListItem value="I" text="Italy" />
</asp:RadioButtonList>
</form>

</body>
</html>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.