【问题标题】:How can I avoid duplicating this grid config code?如何避免重复此网格配置代码?
【发布时间】:2012-06-21 08:02:39
【问题描述】:

我有以下代码在 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.");

【问题讨论】:

  • 错误:“&nbsp”应该是“ ”
  • @usr,很有趣,我从来没有注意到这个错误,谢谢,因为 Chrome 会插入一个空格,即使没有空格,默认样式也会将 <a> 标签留出足够的空间,以至于不会注意到。

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


【解决方案1】:

一般情况下,必须在 PartialView 和 Controller 端都具有导出的 GridViewSettings 对象的 "Name" 属性。

GridView 的 PartialView 也应该用表单包裹起来。

参见 DX 代码库中的this 示例和this 线程。

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

【讨论】:

  • 两边只有Name,如何指定导出的列和格式?
  • 我正在使用那个 DX 演示,但它不包含列中的超链接,这些超链接必须在视图中创建,而不是在控制器中创建。我的示例代码中的列在您链接到的演示中不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多