亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET框架中的數據綁定概要與數據綁定表達式的使用

2024-07-10 13:30:44
字體:
來源:轉載
供稿:網友

<%# %> 語法

ASP.NET 介紹了一種新的聲明性語法 <%# %>。該語法是在 .aspx 頁中使用數據綁定的基礎。所有數據綁定表達式都必須包含在這些字符中。下面的列表包含從多個源進行簡單數據綁定的示例:
簡單屬性(用于客戶的語法):

<%# custID %>

集合(用于訂單的語法):

<asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">

 表達式(用于聯系人的語法):

<%# ( customer.First Name + " " + customer.LastName ) %>

     
方法結果(用于未結清余額的語法):

<%# GetBalance(custID) %>

     
在前面的示例中,<%# %> 內聯標記用于指示將把特定數據源中的信息放在 .aspx 頁中的什么位置。以下數據綁定示例使用 TextBox Web 服務器控件:

<asp:textbox id=txt text="<%# custID %>" runat=server />


Page.DataBind() versus Control.DataBind()

確定特定數據源并設置 .aspx 頁上的對象之后,您必須將數據綁定到數據源。您可以使用 Page.DataBind 或 Control.DataBind 方法將數據綁定到數據源。

這兩種方法的使用方式很相似。主要差別在于:調用 Page.DataBind 方法后,所有數據源都將綁定到它們的服務器控件。在顯式調用 Web 服務器控件的 DataBind 方法或在調用頁面級的 Page.DataBind 方法之前,不會有任何數據呈現給控件。通常,可以從 Page_Load 事件調用 Page.DataBind(或 DataBind)。

數據綁定表達式深入
數據綁定表達式包含在 <%# 和 %> 分隔符之內,并使用 Eval 和 Bind 函數。Eval 函數用于定義單向(只讀)綁定。Bind 函數用于定義雙向(可更新)綁定。除了通過在數據綁定表達式中調用 Eval 和 Bind 方法執行數據綁定外,還可以調用 <%# 和 %> 分隔符之內的任何公共范圍代碼,以在頁面處理過程中執行該代碼并返回一個值。
調用控件或 Page 類的 DataBind 方法時,會對數據綁定表達式進行解析。對于有些控件,如 GridView、DetailsView 和 FormView 控件,會在控件的 PreRender 事件期間自動解析數據綁定表達式,不需要顯式調用 DataBind 方法。
下面的代碼示例演示如何將數據綁定表達式與 ItemTemplate 中的 FormView 控件結合使用。

<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>

使用 Eval 方法
Eval 方法可計算數據綁定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的后期綁定數據表達式。在運行時,Eval 方法調用 DataBinder 對象的 Eval 方法,同時引用命名容器的當前數據項。命名容器通常是包含完整記錄的數據綁定控件的最小組成部分,如 GridView 控件中的一行。因此,只能對數據綁定控件的模板內的綁定使用 Eval 方法。
Eval 方法以數據字段的名稱作為參數,從數據源的當前記錄返回一個包含該字段值的字符串??梢蕴峁┑诙€參數來指定返回字符串的格式,該參數為可選參數。字符串格式參數使用為 String 類的 Format 方法定義的語法。

使用 Bind 方法
Bind 方法與 Eval 方法有一些相似之處,但也存在很大的差異。雖然可以像使用 Eval 方法一樣使用 Bind 方法來檢索數據綁定字段的值,但當數據可以被修改時,還是要使用 Bind 方法。
在 ASP.NET 中,數據綁定控件(如 GridView、DetailsView 和 FormView 控件)可自動使用數據源控件的更新、刪除和插入操作。例如,如果已為數據源控件定義了 SQL Select、Insert、Delete 和 Update 語句,則通過使用 GridView、DetailsView 或 FormView 控件模板中的 Bind 方法,就可以使控件從模板中的子控件中提取值,并將這些值傳遞給數據源控件。然后數據源控件將執行適當的數據庫命令。出于這個原因,在數據綁定控件的 EditItemTemplate 或 InsertItemTemplate 中要使用 Bind 函數。
Bind 方法通常與輸入控件一起使用,例如由編輯模式中的 GridView 行所呈現的 TextBox 控件。當數據綁定控件將這些輸入控件作為自身呈現的一部分創建時,該方法便可提取輸入值。
Bind 方法采用數據字段的名稱作為參數,從而與綁定屬性關聯,如下面的示例所示:

<EditItemTemplate> <table>  <tr>   <td align=right>    <b>Employee ID:</b>   </td>   <td>    <%# Eval("EmployeeID") %>   </td>  </tr>  <tr>   <td align=right>    <b>First Name:</b>   </td>   <td>    <asp:TextBox ID="EditFirstNameTextBox" RunAt="Server"     Text='<%# Bind("FirstName") %>' />   </td>  </tr>  <tr>   <td align=right>    <b>Last Name:</b>   </td>   <td>    <asp:TextBox ID="EditLastNameTextBox" RunAt="Server"      Text='<%# Bind("LastName") %>' />   </td>  </tr>  <tr>   <td colspan="2">    <asp:LinkButton ID="UpdateButton" RunAt="server"     Text="Update" CommandName="Update" />         <asp:LinkButton ID="CancelUpdateButton" RunAt="server"     Text="Cancel" CommandName="Cancel" />   </td>  </tr> </table></EditItemTemplate>

單擊行的 Update 按鈕時,使用 Bind 語法綁定的每個控件屬性值都會被提取出來,并傳遞給數據源控件以執行更新操作。

顯式調用 DataBind 方法
有些控件,如 GridView、FormView 和 DetailsView 控件,當它們通過 DataSourceID 屬性綁定到數據源控件時,會通過隱式調用 DataBind 方法來執行綁定。但是,有些情況需要通過顯式調用 DataBind 方法來執行綁定。
其中一種情況就是使用 DataSource 屬性(而非 DataSourceID 屬性)將某個控件綁定到數據源控件時。在這種情況下,需要顯式調用 DataBind 方法,從而執行數據綁定和解析數據綁定表達式。
另一種情況就是需要手動刷新數據綁定控件中的數據時。假設有這樣一個頁面,其中有兩個控件,這兩個控件都顯示來自同一數據庫的信息(可能使用不同的視圖)。在這種情況下,可能需要顯式地將控件重新綁定到數據,以保持數據顯示的同步。例如,可能有一個顯示產品列表的 GridView 控件,和一個允許用戶編輯單個產品的 DetailsView 控件。雖然 GridView 和 DetailsView 控件所顯示的數據都來自同一數據源,但被綁定到不同的數據源控件,因為這兩個控件使用不同的查詢來獲取其數據。用戶可能會使用 DetailsView 控件更新記錄,從而引發由關聯的數據源控件執行更新。但是,由于 GridView 控件被綁定到不同的數據源控件,所以,該控件仍將顯示舊的記錄值,直至頁面被刷新時才會更新。因此,在 DetailsView 控件更新數據后,可以調用 DataBind 方法。這會使 GridView 控件更新其視圖,并重新執行任何數據綁定表達式以及 <%# 和 %> 分隔符之內的公共范圍代碼。這樣一來,GridView 控件將會反映 DetailsView 控件所做的更新。

使用對查找表的綁定
一種有關數據綁定控件的常見方案是允許用戶使用 DropDownList 控件或其他列表控件從查找表中選擇一個值,以更新或插入該值。在這種情況下,將該查找控件綁定到返回可能值列表的單獨數據源,而將該查找控件的選定值綁定到父數據綁定行中的字段。
可以按照如下方法添加此功能。首先,對于查找控件,向數據綁定控件(例如 GridView、DetailsView 或 FormView 控件)中的模板添加一個列表控件(DropDownList 或 ListBox 控件)。接著將查找控件的 SelectedValue 屬性綁定到容器控件的數據源中的相關字段。其次,將查找控件的 DataSourceID 屬性設置為可檢索查找值的數據源控件。接著將查找控件的 DataTextField 屬性設置為查找表中包含要顯示的值的字段,并將其 DataValueField 屬性設置為查找表中包含查找值的唯一標識符的字段(如果適用)。
下面的代碼示例演示一個 DropDownList 控件,此控件包括在 FormView 控件的 InsertItemTemplate 模板中(它也可以是包括在 DetailsView 控件的 Fields 屬性或 GridView 控件的 Columns 屬性中的 TemplateField 的 InsertItemTemplate 模板)。DropDownList 控件的 SelectedValue 屬性使用 Bind 方法實現與 FormView 控件當前行的 CategoryID 字段之間的雙向綁定。將 DropDownList 控件的 DataSourceID 屬性設置為單獨的數據源控件,用于檢索可能的類別名稱和 ID 列表。將 DropDownList 控件的 DataTextField 屬性設置為查找數據源中的 CategoryName 字段,以便顯示可能的類別名稱列表。將 DropDownList 控件的 DataValueField 屬性設置為查找數據源中相關類別名稱的 CategoryID 字段。當用戶從列表中選擇類別名稱時,DropDownList 控件的 SelectedValue 屬性將被設置為選定類別名稱的類別 ID。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品极品在线观看| 亚洲国产精品女人久久久| 日韩视频―中文字幕| 午夜精品福利在线观看| 国产精品免费观看在线| 久久成人在线视频| 日本乱人伦a精品| 日韩美女在线观看一区| 亚洲成人在线视频播放| 久久大大胆人体| 国产99久久精品一区二区永久免费| 成人h猎奇视频网站| 精品欧美国产一区二区三区| 中文日韩电影网站| 亚洲成年人在线| 亚洲自拍偷拍福利| 久久免费观看视频| 91久久国产精品91久久性色| 国产精品男人爽免费视频1| 97成人精品视频在线观看| 久久艳片www.17c.com| 国产精品久久久久久久av电影| 亚洲精品日韩久久久| 欧美激情xxxx性bbbb| 欧美精品videos另类日本| 久久成人精品一区二区三区| 亚洲精品xxx| 亚洲最大在线视频| 乱亲女秽乱长久久久| 精品国产欧美一区二区五十路| 综合网日日天干夜夜久久| 日韩欧美中文第一页| 亚洲免费视频网站| 中文字幕在线观看亚洲| 日韩一二三在线视频播| 久久久久亚洲精品国产| 97在线免费视频| 日韩av电影免费观看高清| 久久影院资源网| 亚洲**2019国产| 国产精品黄色影片导航在线观看| 国产欧美欧洲在线观看| 欧美日韩第一页| 日韩在线高清视频| 欧美一区二区大胆人体摄影专业网站| 国产精品入口夜色视频大尺度| 久久视频在线免费观看| 欧美放荡办公室videos4k| 91网站在线看| 欧美精品久久一区二区| 超碰精品一区二区三区乱码| 国产欧美在线视频| 久久99精品久久久久久琪琪| 欧美精品videosex性欧美| 疯狂做受xxxx高潮欧美日本| 国产精品久久激情| 在线视频亚洲欧美| 欧美电影在线观看| 久久久久久久色| 在线精品91av| 久久久久北条麻妃免费看| 欧美做爰性生交视频| 久久九九亚洲综合| 中文字幕日韩专区| 亚洲高清不卡av| 高清日韩电视剧大全免费播放在线观看| 欧美亚洲成人免费| 亚洲2020天天堂在线观看| 亚洲毛片在线免费观看| 日韩美女毛茸茸| 国产成人avxxxxx在线看| 欧美日韩综合视频| 国产亚洲欧美一区| 亚洲人成伊人成综合网久久久| 精品久久国产精品| 国产精品国产三级国产aⅴ浪潮| 成人a级免费视频| 亚洲一二在线观看| 91国产一区在线| 欧美日韩免费网站| 亚洲第一区中文字幕| 亚洲免费av电影| 中文欧美在线视频| 日韩欧美aaa| 国产成人精品最新| 精品国产乱码久久久久久婷婷| 欧美性xxxx极品高清hd直播| 欧美亚洲国产日韩2020| 综合网中文字幕| 91丝袜美腿美女视频网站| 91久久久久久久一区二区| 最近更新的2019中文字幕| 国产精品视频导航| 精品日本高清在线播放| 国产精品久久久久久亚洲调教| 亚洲区在线播放| 欧美日韩成人黄色| 欧美精品videos性欧美| 欧美激情免费观看| 精品亚洲男同gayvideo网站| 日韩电影在线观看免费| 欧美午夜丰满在线18影院| 日韩一区二区三区国产| 91丨九色丨国产在线| 欧美精品videosex极品1| 亚洲综合中文字幕在线| 91久久久久久久久久| 国产精品久久久999| 国产一区二区三区高清在线观看| 97久久精品国产| 高潮白浆女日韩av免费看| 成人黄色影片在线| 亚洲缚视频在线观看| 色婷婷综合久久久久| 久久久久久久久亚洲| 亚洲图片在线综合| 精品亚洲va在线va天堂资源站| 国产精品久久久久久久9999| 国产亚洲免费的视频看| 4388成人网| 国产欧美日韩中文| 国产男女猛烈无遮挡91| 一个人www欧美| 91夜夜揉人人捏人人添红杏| 精品亚洲一区二区三区在线观看| 国产一区二区三区四区福利| 欧美日韩国产成人在线| 日韩av理论片| 日韩视频在线免费| 视频在线观看99| 久久伊人精品天天| 在线观看欧美日韩| 精品毛片三在线观看| 中文国产成人精品久久一| 成人自拍性视频| 日韩成人激情在线| 九九九久久久久久| 国产91网红主播在线观看| 国产精品综合网站| 欧美久久精品午夜青青大伊人| 日韩在线视频观看正片免费网站| 亚洲色图av在线| 国产精品自拍偷拍视频| 亚洲精品国产精品乱码不99按摩| 日韩在线观看免费全集电视剧网站| 在线亚洲欧美视频| 97超碰国产精品女人人人爽| 亚洲成av人乱码色午夜| 亚洲大胆人体在线| 亚洲精品999| 欧美精品久久久久久久久久| 中文字幕亚洲第一| 久久久免费观看视频| 亚洲国产第一页| 欧美亚洲激情在线| 色综合久综合久久综合久鬼88| 日韩av影视在线| 亚洲天堂精品在线| 少妇高潮久久久久久潘金莲| 欧美日韩中文字幕日韩欧美| 精品高清一区二区三区| 最近中文字幕mv在线一区二区三区四区| 久久久亚洲福利精品午夜| 91精品视频免费看|