【发布时间】:2013-11-27 19:36:52
【问题描述】:
如何扩展 DevExpress GridView 列。 DevExpress 似乎无法跟随 DataAnnotations Display。
这是我为实现此行为而汇总的内容:
public static class Extensions
{
public static void AddModelToGrid<T>(
this MVCxGridViewColumnCollection devExpCollection,
List<T> model)
{
model.ForEach((obj) =>
{
obj.GetType().GetProperties().ToList().ForEach((prop) =>
{
var displayName =
(DisplayAttribute)prop.GetCustomAttribute(typeof(DisplayAttribute));
string name = null;
if (displayName != null)
{
name = displayName.Name;
}
else
{
name = prop.Name;
}
devExpCollection.Add(prop.Name, name);
});
});
}
}
我们的想法是像这样使用它。
@using MyApp.Models
@{
var grid = Html.DevExpress().GridView(settings =>
{
settings.Name = "GridView";
settings.CallbackRouteValues = new { Controller = "Home", Action = "GridViewPartial" };
settings.KeyFieldName = "ID";
settings.SettingsPager.Visible = true;
settings.Settings.ShowGroupPanel = true;
settings.Settings.ShowFilterRow = true;
settings.SettingsBehavior.AllowSelectByRowClick = true;
/* This doesn't work */
settings.Columns.AddModelToGrid<MyObject>(settings.Columns);
});
if (ViewData["EditError"] != null)
{
grid.SetEditErrorText((string)ViewData["EditError"]);
}
}
@grid.Bind(Model).GetHtml()
我怎样才能实现这种行为?
【问题讨论】:
标签: c# asp.net-mvc devexpress extension-methods