2012-06-21 53 views
3

我有以下代碼在Razor視圖中用於配置DevExpress GridView MVC擴展的網格設置。所有代碼都很好,但現在我希望從網格中輸出數據,這需要在'服務器'上需要相同的配置代碼,即視圖的上游。如果不是對WebViewPage<TModel>.ViewContext屬性的必需訪問權限,我可以很輕鬆地完成此操作並在我的視圖模型上提供GridSettings屬性。如何避免重複此網格配置代碼?

現在我正在使用一個非常醜陋的解決方法,並將ViewContext從視圖中傳回控制器;控制器然後建立網格設置。不用說在控制器上調用方法的觀點是相當臭的。

settings.Columns.Add(column => 
         { 
          column.Caption = "#"; 
          column.SetDataItemTemplateContent(c => 
                    { 
                     ViewContext.Writer.Write(
                      Html.ActionLink("Edit", "Edit", new {id = DataBinder.Eval(c.DataItem, "Id")}) + "&nbsp" + 
                      Html.ActionLink("Delete", "Delete", new {id = DataBinder.Eval(c.DataItem, "Id")}, 
                          new {onclick = "return confirm('Do you really want to delete this record? [Just say no!]')"}) 
                      ); 
                    }); 
          column.SetHeaderTemplateContent(c => ViewContext.Writer.Write(Html.ActionLink("New", "Create"))); 
          column.Settings.AllowDragDrop = DefaultBoolean.False; 
          column.Settings.AllowSort = DefaultBoolean.False; 
          column.Width = 70; 
         }); 
settings.Columns.Add("RefNum", "Emp. No."); 
+0

錯誤:「&NBSP」應爲「 」 – usr

+0

@usr,好笑的是,我從來沒有發現錯誤,謝謝,因爲Chrome瀏覽器插入一個空格,即使沒有空間默認樣式空格''標籤僅夠沒有注意到。 – ProfK

回答

0

一般情況下,有必要有「名稱」導出GridViewSettings財產上的PartialView和控制器雙方反對。

GridView的PartialView也應該用表單包裝。

請參閱this示例中的DX代碼庫和this線程。

可以在控制器端指定一個靜態對象內的共享GridViewSettings(如this演示)。

+0

兩側只有'Name',我如何指定導出的列和格式? – ProfK

+0

我已經更新了我的答案。 – Mikhail

+0

我正在使用該DX演示,但它不包括必須在視圖中創建的列中的超鏈接,而不是控制器。我的示例代碼中的列在您鏈接的演示中不起作用。 – ProfK