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