Kendo MVC C# возможно ли иметь общие c поля в каком-либо шаблоне, чтобы их можно было легко включить во все таблицы? - PullRequest
1 голос
/ 24 марта 2020

Итак, у нас около 90 сеток. В попытке стандартизировать ширину столбцов, и т. Д. c, я рассматривал возможность извлечения полей контрольного журнала в некоторый базовый класс, но я не уверен, насколько это возможно. У нас есть шесть полей для даты создания, даты последнего изменения и даты удаления и того, кто это сделал, и они находятся в конце каждой сетки. Есть ли какой-нибудь способ генерировать их в одном общем месте и включать их?

1 Ответ

1 голос
/ 27 марта 2020

Да

Чтобы решить эту проблему, вам нужно написать метод расширения для GridBuilder класса.

Поскольку вы хотите добавить столбцы контрольного журнала в конец, вы должны использовать ту же стратегию, что и , найденную в этом решении и в этом решении :

  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;
    }
}

Вы можете использовать лямбды, если все ваши сетки используют один и тот же базовый класс. В шаблоне:

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

Я приветствую ваш инстинкт как можно больше повторного использования. Людям, обслуживающим эти 90 сетей, будет легче работать, и в итоге вы будете выполнять меньше работы. WIN-WIN.

...