Продукт моей компании активно использует сетку Telerik MVC (более 100 веб-страниц с сетками), и мы пытаемся найти способы минимизировать объем работы, необходимой для настройки частей этих сеток, установив эти части из класса, который мы назвали Settings. .
Вот пример сетки. Вы можете видеть, что мы успешно наладили работу с настройками .PageSize() и .Pageable(p.PageSizes()). Однако .Filterable(f.Operators()) доставляет мне неприятности, и я надеюсь, что кто-нибудь может указать, что я делаю неправильно.
СЕТКА
@(Html.Kendo().Grid(Model)
.Name("grid")
.DataSource(ds => ds
.Ajax()
.Filter(filter => filter.Add(group => group.Active).IsEqualTo(true))
.Model(model =>
{
model.Id(m => m.Id);
model.Field(m => m.Id).DefaultValue(new Guid());
})
.PageSize(Settings.DefaultPageSize) //WORKING
.Read(read => read.Action("Read", "Users"))
.Events(events => { events.Error("onDSErrors"); events.RequestEnd("onDSRequestEnd"); })
)
.Pageable(p => p
.PageSizes(Settings.MvcGridPageSizes) //WORKING
.Refresh(true)
)
.Filterable(f => f
.Extra(true)
.Operators(Settings.MVCGridFilterOperators) //NOT WORKING
)
.Columns(columns =>
{
columns.Bound(u => u.UserName)
.Title("Username")
.Width(200);
...
...
...
})
)
КЛАСС НАСТРОЙКИ (Это то, что я хочу сделать, но пока не могу начать работать...)
public static class Settings
{
...
public static Action<FilterableOperatorsBuilder> MVCGridFilterOperators
{
get
{
FilterableOperators operators = new FilterableOperators();
FilterableOperatorsBuilder builder = new FilterableOperatorsBuilder(operators);
builder.ForString(x => x
.Contains("Contains")
.DoesNotContain("Does not contain")
.StartsWith("Starts with")
.EndsWith("Ends with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
.IsNull("Is null")
.IsNotNull("Is not null")
);
return builder;
//Error message I see when hovering over "return builder;":
// Cannot implicitly convert type ‘Kendo.Mvc.UI.Fluent.FilterableOperatorsBuilder’ to ‘System.Action<Kendo.Mvc.UI.Fluent.FilterableOperatorsBuilder>’
}
}
...
}
В настоящее время раздел фильтруемых операторов во всех наших сетках должен обновляться в каждой из более чем 100 сеток, если запрашиваются какие-либо изменения, потому что они выглядят следующим образом:
.Operators(o => o
.ForString(str => str
.Clear()
.Contains("Contains")
.DoesNotContain("Does not contain")
.StartsWith("Starts with")
.EndsWith("Ends with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
)
)
Поскольку мы используем так много сеток, их обновление занимает некоторое время, так как требует копирования/вставки или поиска и замены для каждой сетки. Заранее благодарю вас за любую помощь, которую вы можете мне предложить!