ASP.NET介面資料繫結大大雜燴

來源:互聯網
上載者:User

 

  很久沒有做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

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.