Kendo MVC C# 是否可以在某种模板中包含通用字段以轻松包含在所有网格中?

Kendo MVC C# is it possible to have generic fields in some kind of template to include easily in all grids?

所以我们有大约 90 个网格。为了标准化列宽等,我正在考虑将审计跟踪字段拉出到某种基础 class 中,但我不确定这有多大可能。我们有六个字段用于创建日期、上次更改日期和删除日期以及谁做的,它们位于每个网格的末尾。有没有某种方法可以在一个公共位置生成它们并将它们包括在内?

为了解决这个问题,你需要写一个extension method to the GridBuilder class.

因为您想将 审计跟踪 列添加到末尾,所以您将采用相同的策略 found in this solution and this solution:

  1. 写扩展方法.AddAuditTrailColumns()
  2. 定义非审计跟踪的网格列
  3. 致电.AddAuditTrailColumns()

它看起来像:

public static class Extensions
{
    public static GridBuilder<T> AddAuditTrailColumns<T>(this GridBuilder<T> builder) where T: class
    {
        //add audit trail columns
        builder.Columns(columns =>
        {
            columns.Bound("CreateDate").Filterable(false);
            columns.Bound("CreatedBy");
            columns.Bound("LastChangeDate");
            columns.Bound("LastChangedBy");
            columns.Bound("DeleteDate");
            columns.Bound("DeletedBy");
        });
        return builder;
    }
}

如果所有网格都使用相同的基数,则可以使用 lambdas class。 在模板中:

@(Html.Kendo.Grid<Product>("Grid74")
    .BindTo(Model)
    .Columns(columns =>
           {
               columns.Bound(p => p.Name);
               columns.Bound(p => p.Description);
           })
   .AddAuditTrailColumns()
)

我赞赏你尽可能重用的本能。维护这 90 个网格的人的工作会更轻松,最终你会做更少的工作。双赢。