如何避免重复此网格配置代码?

时间:2012-06-21 08:02:40

标签: asp.net-mvc asp.net-mvc-3 devexpress

我在Razor视图中使用以下代码来配置DevExpress GridView MVC扩展的网格设置。代码一切都很好,但现在我希望从网格中进行数据导出,这需要在“服务器”上的相同配置代码,即视图的上游。我可以很容易地做到这一点并在我的视图模型上提供GridSettings属性,如果它不是对WebViewPage<TModel>.ViewContext属性的必需访问。

现在我正在使用一个非常难看的解决方法,并从视图中将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.");

1 个答案:

答案 0 :(得分:0)

通常,必须在PartialView和Controller端都具有导出的GridViewSettings对象的“Name”属性。

GridView的PartialView也应该用表格包装。

请参阅DX代码库中的this示例和this主题。

可以在静态对象中的Controller端指定共享的GridViewSettings(例如在this demo中)。