Как исключить фильтр колонок MVC Kendo Grid, который «содержит» параметр? - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над ошибкой, когда на одном экране есть сетка, содержащая столбец с числами, но когда я пытаюсь его отфильтровать, у него есть опция «содержит».

Когда я набираю 0, я получаю сообщение об ошибке.

Мне нужно отфильтровать этот столбец как число, а не как строку.

Это фрагмент кода:

columns.Bound(x => x.DebitAmount).Title("Debit").Width(300).ClientTemplate("#=kendo.toString(DebitAmount,'c') #").ClientFooterTemplate("#=kendo.toString(sum,'c') #");
columns.Bound(x => x.CreditAmount).Title("Credit").Width(300).ClientTemplate("#=kendo.toString(CreditAmount,'c') #").ClientFooterTemplate("#=kendo.toString(sum,'c') #");

..................

.Filterable(ftb => ftb.Mode(GridFilterMode.Menu)
       .Extra(false)
       .Operators(operators => operators
       .ForString(str => str.Clear()
       .Contains("Contains")
       .IsEqualTo("EqualTo")
       .IsNotEqualTo("NotEqualTo")
       .IsEmpty("Empty")))
       .Operators(operators => operators
       .ForNumber(str => str.Clear()
      .IsEqualTo("EqualTo")
      .IsGreaterThan("GreaterThan")
      .IsLessThan("LessThan")
       )).Messages(m => m.IsFalse(" False "))
    .Messages(m => m.IsTrue("True ")))

Модель объявляет эти поля десятичными

Это сгенерированная часть экрана:

enter image description here

У другого экрана есть другая фильтруемая сетка с полем Amount. Все параметры объявляются одинаково, но фильтр этого экрана для поля «Сумма» не отображает опцию «содержит» при отображении.

Это код:

columns.Bound(c => c.Amount).Title("Amount").ClientTemplate("#= kendo.toString(Amount,'c')#").Width("120px");

......................

    .Filterable(ftb => ftb.Mode(GridFilterMode.Menu)
    .Extra(false)
    .Operators(operators => operators
    .ForString(str => str.Clear()
    .Contains("Contains")
    .IsEqualTo("EqualTo")
    .IsNotEqualTo("NotEqualTo")
    .IsEmpty("Empty")))
    .Operators(operators => operators
    .ForNumber(str => str.Clear()
   .IsEqualTo("EqualTo")
   .IsGreaterThan("GreaterThan")
   .IsLessThan("LessThan")
    )))

Это часть экрана:

enter image description here

При определении операций фильтрации все выглядит одинаково (за исключением части сообщений), но почему-то на первом экране операция «содержит» включена, а на втором - нет.

Чего мне не хватает?

1 Ответ

0 голосов
/ 17 мая 2018

Я нашел решение здесь: Как заставить Kendo Grid использовать числовой фильтр для столбца

При определении источника данных мне пришлось добавить следующую логику преобразования:

.Model(c => { c.Field<decimal>(d => d.DebitAmount); })
.Model(c => { c.Field<decimal>(d => d.CreditAmount); })
.Model(c => { c.Field<DateTime>(d => d.RequestedDate); })
...