在亞當斯的前一篇文章中: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專案:
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物件當作資料呈現來源
4. GridView控制項進入編輯欄位視窗,先找到動態欄位
5. 把動態欄位中的關聯欄位Jobs和Publishers加入GridView中
6. 瀏覽網頁,此時會出現錯誤訊息,如下圖所示:
主要是因為使用EntityDataSource設定資料來源的時候,它的一個很重要的屬性: ContextTypeName並不會自動給值,必須由開發者手動設定值。
7. 因此切換到EntityDataSource的屬性視窗,設定ContextTypeName為:pubsModel.pubsEntities
8. 以下是設定完成的EntityDataSource屬性資料
9. 最後重新瀏覽網頁,可以看到動態欄位Jobs和Publishers可以正確地顯示在GridView控制項上,並且擁有關聯網頁可以檢視。