2011年7月17日 星期日

How to using Dynamic Data in GridView-2(如何在GridView上套用DynamicData動態資料機制)

在亞當斯的前一篇文章中:How to using Dynamic Data in GridView-1(如何在GridView上套用DynamicData動態資料機制)有寫到可以使用Dynamic Data 機制來快速呈現資料庫的資料,但是上述連結的那篇文章是用ASP.NET Dynamic Data Linq to WebSite專案來設計,所以預設不用特殊的設定就可以達到符合的功能,然後若是修改使用ASP.NET Dynamic Data Entities WebSite專案,又是如何?

1.建立一個ASP.NET Dynamic Data Entities WebSite專案:

clip_image002

2. 同之前的步驟,新增一個ADO.NET Entity Data Model,然後設定Pubs資料庫為資料來源,並修改Global.asax,這邊值得一提的是因為EDM的模式所產生的DataContext類別會加上命名空間,所以在設定骨幹網站的時候要給完整名稱,如:pubsModel.pubsEntities

DefaultModel.RegisterContext(typeof(pubsModel.pubsEntities), new ContextConfiguration() { ScaffoldAllTables = true });

routes.Add(new DynamicDataRoute("{table}/{action}.aspx"){
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),Model = DefaultModel});

3. 新增一個網頁應用程式,加入GridView並設定資料來源為EntityDataSource,這邊我們挑選employee物件當作資料呈現來源

clip_image003

4. GridView控制項進入編輯欄位視窗,先找到動態欄位

clip_image004

5. 把動態欄位中的關聯欄位Jobs和Publishers加入GridView中

clip_image005

6. 瀏覽網頁,此時會出現錯誤訊息,如下圖所示:

clip_image006

主要是因為使用EntityDataSource設定資料來源的時候,它的一個很重要的屬性: ContextTypeName並不會自動給值,必須由開發者手動設定值。

7. 因此切換到EntityDataSource的屬性視窗,設定ContextTypeName為:pubsModel.pubsEntities

clip_image007

8. 以下是設定完成的EntityDataSource屬性資料

clip_image008

9. 最後重新瀏覽網頁,可以看到動態欄位Jobs和Publishers可以正確地顯示在GridView控制項上,並且擁有關聯網頁可以檢視。

clip_image009

沒有留言: