ASP.NET 2.0高級數(shù)據(jù)處理之?dāng)?shù)據(jù)綁定_.Net教程
推薦:ASP.NET里的事務(wù)處理事務(wù)是一組組合成邏輯工作單元的數(shù)據(jù)庫操作,雖然系統(tǒng)中可能會出錯,但事務(wù)將控制和維護每個數(shù)據(jù)庫的一致性和完整性。如果在事務(wù)過程中沒有遇到錯誤,事務(wù)中的所有修改都將永久成為數(shù)據(jù)庫的一部
在前面的"模板中的數(shù)據(jù)綁定"部分中我們論述過,ASP.NET包含了一種宣告式的數(shù)據(jù)綁定語法,用于在數(shù)據(jù)綁定模板中把數(shù)據(jù)源字段與控件的屬性相關(guān)聯(lián)。你也可以在代碼中使用<%# ... >語法來進行任意值的數(shù)據(jù)綁定,例如頁面和控件屬性、集合、表達式,甚至于方法調(diào)用的返回結(jié)果。為了強制計算數(shù)據(jù)綁定的值,你必須在包含數(shù)據(jù)綁定語法的頁面或控件上調(diào)用DataBind方法。下面的表格顯示了ASP.NET中的數(shù)據(jù)綁定語法的一些例子。
單個屬性 Customer: <%# custID %>
集合 Orders <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
表達式 Contact <%# ( customer.FirstName " " customer.LastName ) %>
方法的返回值 Outstanding Balance: <%# GetBalance(custID) %>
盡管上面的語法與ASP的Response.Write便捷語法(<%= %>)看起來類似,但是它們的行為卻決然不同。ASP Response.Write便捷語法在頁面處理的時候計算值,而ASP.NET數(shù)據(jù)綁定語法只在DataBind方法被調(diào)用的時候才計算值。
DataBind是頁面和所有務(wù)器控件的一個方法。當(dāng)你調(diào)用父控件的DataBind的時候,它會依次調(diào)用所有子控件的DataBind方法。例如,DataList1.DataBind()就會調(diào)用DataList模板中的所有控件的DataBind方法。調(diào)用頁面的DataBind方法--Page.DataBind() 或簡單地調(diào)用 DataBind()--會引發(fā)頁面上所有的數(shù)據(jù)綁定表達式的計算操作。通常只在頁面的Page_Load事件中調(diào)用DataBind方法,如下面的例子所示。
在.aspx頁面的任何宣告式片斷中,你都可以使用綁定語法,并為它的估值指定運行時所期望的數(shù)據(jù)類型。上面例子中的簡單屬性、表達式和方法在被計算的時候會向用戶顯示文本內(nèi)容。在這種情況下,數(shù)據(jù)綁定表達式的值是String類型的。在上面的集合例子中,數(shù)據(jù)綁定語法的值的類型是ListBox的DataSource屬性。你會發(fā)現(xiàn)在綁定表達式中強制轉(zhuǎn)換值的類型對于生成期望的結(jié)果是必要的。例如,如果count是一個整數(shù):
Number of Records: <%# count.ToString() %>
ASP.NET數(shù)據(jù)綁定語法支持公共變量、頁面的屬性和頁面中其它控件的屬性的綁定。下面的例子演示了如何綁定到公共變量和頁面的簡單屬性。請注意,在DataBind()被調(diào)用之前,這些值都已經(jīng)初始化過了。
| 以下為引用的內(nèi)容: <script language="VB" runat="server"> ReadOnly Property custID() As String ReadOnly Property orderCount() As Integer |
下面的例子演示如何綁定到另一個控件的屬性:
| 以下為引用的內(nèi)容: <asp:DropDownList id="StateList" runat="server"> <asp:button ID="Button1" Text="Submit" OnClick="SubmitBtn_Click" runat="server"/> |
列表類型的服務(wù)器控件(例如DropDownList、ListBox和HTMLSelect)把集合作為數(shù)據(jù)源。下面的例子演示如何綁定到通用語言運行時集合類型。這些控件只能綁定到支持Ienumerable、Icollection或IlistSource接口的集合。更為常見的是,它可以綁定到ArrayList、Hashtable、DataView和DataReader。下面的例子演示了如何綁定到ArrayList。
| 以下為引用的內(nèi)容: Sub Page_Load(sender As Object, e As EventArgs) DropDown1.DataSource = values |
下面的例子演示了如何綁定到DataView。請注意DataView類是在System.Data名字空間中定義的。
| 以下為引用的內(nèi)容: Sub Page_Load(sender As Object, e As EventArgs) '建立DataTable '填充一些數(shù)據(jù) For i = 1 To 9 GridView1.DataSource = New DataView(dt) 下面的例子演示了如何綁定到Hashtable。 Sub Page_Load(sender As Object, e As EventArgs) MyDataList.DataSource = h |
通常情況下,你可能希望綁定到頁面或控件之前先處理數(shù)據(jù)。下面的例子演示了如何綁定到表達式和方法的返回值。
| 以下為引用的內(nèi)容: Sub Page_Load(sender As Object, e As EventArgs) values.Add (0) DataList1.DataSource = values Function EvenOrOdd(number As Integer) As String <asp:DataList id="DataList1" ……> |
ASP.NET頁面框架組件提供了一個靜態(tài)的方法,它估算延遲綁定(late-bound)的數(shù)據(jù)綁定表達式并可以選擇把其結(jié)果格式化為字符串。在這種情況下,DataBinder.Eval很方便,因為它消除了開發(fā)者把估值轉(zhuǎn)會為期望的數(shù)據(jù)類型所必須執(zhí)行的很多顯式轉(zhuǎn)化工作。當(dāng)模板化列表中有數(shù)據(jù)綁定控件的時候,它特別有用處,因為在那種情況下,通常數(shù)據(jù)行和數(shù)據(jù)字段都必須轉(zhuǎn)換。
看看下面的例子,它需要把整數(shù)顯示為貨幣字符串。在標(biāo)準(zhǔn)的ASP.NET數(shù)據(jù)綁定語法中,你必須首先轉(zhuǎn)換數(shù)據(jù)行的類型以檢索數(shù)據(jù)字段IntegerValue。接著把它作為參數(shù)傳遞給String.Format方法。
<%# String.Format("{0:c}", (CType(Container.DataItem, DataRowView)("IntegerValue"))) %>
這個語法很復(fù)雜并且不容易記住。與此形成對照的是,DataBinder.Eval是一個簡單的方法,它只有三個參數(shù):數(shù)據(jù)項的命名容器(naming container)、數(shù)據(jù)字段名稱和格式化字符串。在模板化的控件(例如FormView、 GridView、DetailsView、DataList或Repeater)中,命名容器都是Container.DataItem。頁面(Page)是另一種命名容器,也可以用于DataBinder.Eval。前面我們提到,ASP.NET 2.0為DataBinder.Eval提供了一個新的簡化的語法(Eval),你可以在數(shù)據(jù)綁定的控件模板中使用它來自動解析Container.DataItem。
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
<%# Eval("IntegerValue", "{0:c}") %>
格式化字符串參數(shù)是可選的。如果省略了這個參數(shù),DataBinder.Eval會返回Object類型值,如下所示:
<%# CType(DataBinder.Eval(Container.DataItem, "BoolValue"), Boolean) %>
我們要重點注意的是,與標(biāo)準(zhǔn)的數(shù)據(jù)綁定語法相比,DataBinder.Eval會明顯地影響性能,這是因為它使用了延遲綁定的反射(reflection)。請明智地使用DataBinder.Eval,特別是在不需要格式化字符串的情況下。
分享:ASP.NET技巧:DataGrid傳統(tǒng)分頁方式此分頁方式與傳統(tǒng)ASP分頁方式相仿。 DataGridPage.aspx 以下為引用的內(nèi)容: <%@ Page language="c#" Codebehind="DataGridPage.asp
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-ASP.NET 2.0高級數(shù)據(jù)處理之?dāng)?shù)據(jù)綁定
。