Строка режима фильтра сетки Кендо с логическим значением - PullRequest
0 голосов
/ 07 мая 2019

У меня есть сетка кендо с данными типа boolean.Я использую режим фильтра 'row'.

Я использую combobox для такого фильтра:

filterable: {
  cell: {
    template: function (args) {
      args.element.kendoComboBox({

        valuePrimitive: true,
        dataSource: [
          { text: "No", value: "false" },
          { text: "Yes", value: "true" },
          { text: "All", value: "all" }
        ],
        dataTextField: "text",
        dataValueField: "value"
      });

    },
    operator: "eq",
    showOperators: false
  }
}

Образец додзё: http://dojo.telerik.com/@lgoubet/uGeYIXoG

Iне хочу использовать

filterable: {
    messages:
    {
      isTrue: "Oui",
      isFalse: "Non"
    }
}

Я хотел бы использовать флажок или переключатель, потому что он красивее и уместнее.

У вас есть образец?Идея?

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Kendo предоставляет автоматический логический фильтр, вы просто должны сказать ему, что «locked» является логическим фильтром, указав его в источнике данных схема :

$("#grid").kendoGrid({
      dataSource: {
        data: data,
        schema: {
            model: {
            fields: {
              locked: {
                type: "boolean"
              },
              name: {}
            }
          }
        }
      }
   ...});

Полный пример здесь:http://dojo.telerik.com/aGOvOYiT

Теперь, является ли этот фильтр тем, что вы хотите (это две радиокнопки), вопрос UX больше, чем вопрос Kendo.Я бы посоветовал не устанавливать один флажок, поскольку неясно, означает ли состояние без проверки «не отфильтровано» или «отфильтровано по ложному».Ваш комбинированный список является хорошим решением, поскольку он имеет 3 четких и различных состояния.

1 голос
/ 07 мая 2019

Вы можете использовать пользовательский фильтр с любым элементом, который вы хотите. и событие onChange вашего элемента вызывает фильтр:

Вот пример:

 $('#yourRadio').change(function (ev) {
        var grid = $('#grid').data('kendoGrid');
        var field = 'Locked';
        var operator = 'contains';
        var value = this.value;
        grid.dataSource.filter({
            field: field,
            operator: operator,
            value: value
        });
    });

Вы также можете отключить удаление фильтров в секции head вашей сетки с помощью CSS.

th [role="listbox"] {
    visibility: hidden;
}   
thead {
    visibility: hidden;
    display: none;
}    
...