轉(zhuǎn)帖|其它|編輯:郝浩|2010-09-02 14:31:35.000|閱讀 941 次
概述:本文主要演示如何配置動(dòng)態(tài)綁定控件,以使它可以使用頁(yè)模板和驗(yàn)證等從數(shù)據(jù)庫(kù)架構(gòu)或從自定義元數(shù)據(jù)中推斷的功能。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
對(duì)數(shù)據(jù)綁定控件啟用動(dòng)態(tài)數(shù)據(jù)
本部分演示如何配置動(dòng)態(tài)綁定控件,以使它可以使用頁(yè)模板和驗(yàn)證等從數(shù)據(jù)庫(kù)架構(gòu)或從自定義元數(shù)據(jù)中推斷的功能。您的應(yīng)用程序僅需啟用動(dòng)態(tài)數(shù)據(jù)即可使用這些功能。該控件用于顯示和更改SalesOrderDetail表中包含的值。
第一步是配置數(shù)據(jù)源控件,用以與數(shù)據(jù)庫(kù)交互。
添加網(wǎng)頁(yè)和數(shù)據(jù)源控件
在“Solution Explorer”中右擊項(xiàng)目名稱(chēng),然后單擊“Add”。
單擊“new Item”。
在“已安裝的模板”下的左側(cè)窗格中,單擊“Web”。
在中心窗格中,單擊“Web Form”。
在“Name”框中,輸入EnableDynamicData.aspx,然后單擊“添加”。
切換到“Design”視圖。
從“toolbox”的“data”組中,將一個(gè)ObjectDataSource控件添加到該頁(yè)上。
在“ObjectDataSource Tasks”菜單上,單擊“Configure Data Source”。
此時(shí)將顯示“Choose a Business Object”對(duì)話(huà)框。
在“Choose your Business Object”列表中,選擇您在前一過(guò)程中創(chuàng)建的ProcessingOrderDetails類(lèi)。
單擊“Next”。
將顯示“Define Data Methods”對(duì)話(huà)框。
在“Choose a method”選項(xiàng)卡窗格的“Select”列表中,選擇GetSalesOrderDetails方法。
單擊“Update”選項(xiàng)卡。
在“Update”選項(xiàng)卡窗格的“Choose a method”列表中,選擇Update方法。
單擊“finish”。
您已經(jīng)將數(shù)據(jù)源控件配置為使用ProcessingOrderDetails類(lèi)來(lái)通過(guò)數(shù)據(jù)模型與數(shù)據(jù)庫(kù)交互。
下一步是創(chuàng)建數(shù)據(jù)綁定控件并對(duì)其啟用動(dòng)態(tài)數(shù)據(jù)。然后,該控件可以依賴(lài)于動(dòng)態(tài)數(shù)據(jù)功能來(lái)創(chuàng)建用于顯示和編輯數(shù)據(jù)的UI。
配置數(shù)據(jù)綁定控件以啟用動(dòng)態(tài)數(shù)據(jù)功能
從“Toolbox”的“Data”組中,將一個(gè)GridView控件添加到該頁(yè)上。
在“GridView Tasks”菜單的“Choose Data Source”列表中,選擇ObjectDataSource1。
這是您在前一過(guò)程中創(chuàng)建的ObjectDataSource控件的ID。
啟用paging、editing和selection。
切換到“Source”視圖。
在GridView控件的Columns元素中,刪除所有自動(dòng)生成的DataBoundField控件。(保留CommandField元素。)
通過(guò)將AutoGenerateColumns特性設(shè)置為true啟用列的自動(dòng)生成功能,如下面的示例所示:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
DataSourceID="ObjectDataSource1" AutoGenerateColumns="True" >
<Columns>
<asp:CommandField
ShowEditButton="True" ShowSelectButton="True" />
</Columns>
</asp:GridView>
保存并關(guān)閉EnableDynamicData.aspx文件。
打開(kāi)EnableDynamicData.aspx.cs類(lèi)文件。
添加對(duì)System.Web.DynamicData命名空間的引用,如下面的示例所示:
using System.Web.DynamicData
在Page_Init方法中對(duì)GridView控件啟用動(dòng)態(tài)數(shù)據(jù),如下面的示例所示:
protected void Page_Init()
{
GridView1.EnableDynamicData(typeof(SalesOrderDetail));
}
保存并關(guān)閉文件。
重新生成應(yīng)用程序。
測(cè)試動(dòng)態(tài)數(shù)據(jù)功能
本節(jié)演示如何通過(guò)驗(yàn)證以下內(nèi)容來(lái)測(cè)試動(dòng)態(tài)數(shù)據(jù)功能是否已集成到GridView控件中:
該自定義業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)正確交互。
對(duì)數(shù)據(jù)字段的更改進(jìn)行動(dòng)態(tài)數(shù)據(jù)驗(yàn)證。
動(dòng)態(tài)數(shù)據(jù)生成錯(cuò)誤消息,這些錯(cuò)誤消息基于動(dòng)態(tài)數(shù)據(jù)從數(shù)據(jù)庫(kù)架構(gòu)元數(shù)據(jù)中推斷的信息。
測(cè)試動(dòng)態(tài)數(shù)據(jù)功能
在“Solution Explorer”中,右擊EnableDynamicData.aspx頁(yè),然后單擊“在瀏覽器中查看”。
瀏覽器中顯示一個(gè)頁(yè)面,其中顯示SalesOrderDetail表。
驗(yàn)證顯示的SalesOrderDetails數(shù)據(jù)字段是否正確。
在任意行上單擊“Edit”,為UnitPrice列輸入一個(gè)非數(shù)字值。
在同一行上,單擊“Update”。
動(dòng)態(tài)數(shù)據(jù)將顯示一條錯(cuò)誤消息,警告您UnitPrice字段必須為十進(jìn)制值。請(qǐng)注意,用于編輯的UI基于動(dòng)態(tài)數(shù)據(jù)默認(rèn)模板。
在同一行上,單擊“Cancel”。
在任意行上單擊“Edit”,然后將OrderQty列更改為一個(gè)小于或等于數(shù)據(jù)庫(kù)允許的最大整數(shù)(32767)的值。
在同一行上,單擊“Update”。
動(dòng)態(tài)數(shù)據(jù)將更新該數(shù)據(jù)庫(kù)。由于您輸入的值有效,數(shù)據(jù)會(huì)通過(guò)動(dòng)態(tài)數(shù)據(jù)驗(yàn)證。
在任意行上單擊“Edit”,然后將OrderQty列更改為一個(gè)大于數(shù)據(jù)庫(kù)允許的最大整數(shù)(32767)的值。
在同一行上,單擊“Update”。
動(dòng)態(tài)數(shù)據(jù)會(huì)顯示一條錯(cuò)誤消息,指出您輸入了無(wú)效的值。
在同一行上,單擊“Cancel”。
這表明動(dòng)態(tài)數(shù)據(jù)功能已集成到GridView控件中,而且它使用從數(shù)據(jù)庫(kù)架構(gòu)中獲得的元數(shù)據(jù)信息。驗(yàn)證是應(yīng)用程序從動(dòng)態(tài)數(shù)據(jù)中繼承的功能的一部分。
關(guān)閉瀏覽器。
添加自定義數(shù)據(jù)信息
在本部分演練中,您會(huì)向數(shù)據(jù)庫(kù)架構(gòu)中添加自定義信息(元數(shù)據(jù))。動(dòng)態(tài)數(shù)據(jù)在處理數(shù)據(jù)字段時(shí)使用該元數(shù)據(jù)。例如,您可以為數(shù)據(jù)庫(kù)允許的數(shù)據(jù)字段以外的數(shù)據(jù)字段定義值范圍。在本演練中,您將添加自定義信息以要求UnitPrice值(對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)不是必需字段)并設(shè)置OrderQty值的范圍。
提供自定義元數(shù)據(jù)
在“Solution Explorer”中,右擊項(xiàng)目名稱(chēng),然后選擇“Add Refereence”。
即會(huì)顯示“Add Reference”對(duì)話(huà)框。
單擊“.NET”選項(xiàng)卡。
從列表中選擇System.ComponentModel.DataAnnotations。
單擊“OK”。
打開(kāi)EnableDynamicData.aspx.cs文件。
將下面的代碼復(fù)制到該文件中,這樣會(huì)替換文件中的所有已有代碼。
using System.ComponentModel.DataAnnotations;
namespace EnableDynamicData
{
[MetadataType(typeof(SalesOrderDetailMetadata))]
public partial class SalesOrderDetail
{
public class SalesOrderDetailMetadata
{
[Required]
public string UnitPrice { get; set; }
[Range(0, 100)]
public decimal OrderQty { get; set; }
}
}
}
此代碼創(chuàng)建兩個(gè)類(lèi):名為SalesOrderDetail的分部類(lèi)及其內(nèi)部的名為SalesOrderDetailMetadata的類(lèi)。
這些類(lèi)擴(kuò)展數(shù)據(jù)模型,能讓您執(zhí)行以下任務(wù):
向UnitPrice數(shù)據(jù)字段中添加元數(shù)據(jù)以防止出現(xiàn)空值。(AdventureWorks數(shù)據(jù)庫(kù)允許UnitPrice數(shù)據(jù)字段為空值。)當(dāng)用戶(hù)嘗試輸入空值時(shí),動(dòng)態(tài)數(shù)據(jù)將發(fā)出錯(cuò)誤消息。
向OrderQty數(shù)據(jù)字段中添加元數(shù)據(jù)以設(shè)置允許的范圍。AdventureWorks數(shù)據(jù)庫(kù)對(duì)OrderQty數(shù)據(jù)字段沒(méi)有范圍限制。當(dāng)用戶(hù)嘗試輸入超出允許范圍的值時(shí),動(dòng)態(tài)數(shù)據(jù)將發(fā)出錯(cuò)誤消息。
以這種方式使用分部類(lèi)可提供一種靈活的方式來(lái)修改數(shù)據(jù)模型的行為,而不必直接更改數(shù)據(jù)模型。
保存并關(guān)閉文件。
測(cè)試自定義動(dòng)態(tài)數(shù)據(jù)驗(yàn)證
本部分演示如何測(cè)試動(dòng)態(tài)數(shù)據(jù)是否根據(jù)您提供的元數(shù)據(jù)執(zhí)行驗(yàn)證。您將測(cè)試以下內(nèi)容:
動(dòng)態(tài)數(shù)據(jù)根據(jù)自定義元數(shù)據(jù)對(duì)數(shù)據(jù)字段的更改進(jìn)行正確驗(yàn)證。
動(dòng)態(tài)數(shù)據(jù)根據(jù)從自定義元數(shù)據(jù)信息中推斷的信息來(lái)生成錯(cuò)誤消息。
測(cè)試自定義動(dòng)態(tài)數(shù)據(jù)驗(yàn)證
在“Solution Explorer”中,右擊EnableDynamicData.aspx頁(yè),然后選擇“View in Browser”。
瀏覽器中顯示一個(gè)頁(yè)面,其中顯示SalesOrderDetails表。
在任一行上,單擊“Edit”并清除UnitPrice列值。
在同一行上,單擊“Update”。
動(dòng)態(tài)數(shù)據(jù)將顯示一條錯(cuò)誤消息,警告您UnitPrice字段是必需的。這表明動(dòng)態(tài)數(shù)據(jù)驗(yàn)證已集成到GridView控件中,而且它使用您提供的自定義元數(shù)據(jù)信息。
在同一行上,單擊“Cancel”。
在任意行上單擊“Edit”,然后將OrderQty列更改為允許范圍內(nèi)的值,如25。
在同一行上,單擊“Update”。
動(dòng)態(tài)數(shù)據(jù)將更新該數(shù)據(jù)庫(kù)。由于您輸入的值有效,數(shù)據(jù)會(huì)通過(guò)驗(yàn)證。
在任意行上單擊“Edit”,然后將OrderQty列更改為允許范圍外的值,如250。
在同一行上,單擊“Update”。
動(dòng)態(tài)數(shù)據(jù)將顯示一條錯(cuò)誤消息,指出數(shù)據(jù)字段值必須介于0和100之間。這表明已經(jīng)使用自定義元數(shù)據(jù)信息,將動(dòng)態(tài)數(shù)據(jù)驗(yàn)證集成到GridView控件中。
在同一行上,單擊“Cancel”。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載