【问题标题】:Kendo MVC C# is it possible to have generic fields in some kind of template to include easily in all grids?Kendo MVC C# 是否可以在某种模板中包含通用字段以轻松包含在所有网格中?
【发布时间】:2020-03-24 14:50:02
【问题描述】:

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

【问题讨论】:

    标签: c# telerik-grid telerik-mvc code-reuse


    【解决方案1】:

    是的

    要解决此问题,您需要将extension method 写入GridBuilder 类。

    因为您想将 审计跟踪 列添加到末尾,所以您将采用相同的策略,即 found in this solutionthis 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;
        }
    }
    

    如果您的所有网格都使用相同的基类,您可以使用 lambda。 在模板中:

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

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

    【讨论】:

    • 几乎按原样工作。我只需要删除 lambda 用法。谢谢你。我们已经有一个网格扩展文件,所以很容易实现。
    • @JohnLord 您可以编辑我的答案并更改我的代码以匹配您的工作吗?如果你不能编辑我的,也许编辑你的并在底部添加一个 HR 并粘贴正确的代码,然后我会更新我的答案。我完全赞成留下干净的代码,人们可以快速复制和粘贴并开始工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多