Свойство «ui» для фильтрации столбцов Kendo Grid, не работающее при указании свойства «multi: true»

#javascript #jquery #kendo-ui #kendo-grid #kendo-multiselect

#javascript #jquery #kendo-ui #kendo-grid #kendo-множественный выбор

Вопрос:

Я пытаюсь создать фильтр с несколькими флажками для столбца Kendo grid. Для этой функции я использую свойство «multi: true» для фильтруемого столбца. Я также хочу использовать функцию обратного вызова «ui», которая, похоже, не работает, когда у меня установлено свойство «multi: true». Если я удалю это свойство, будет вызван «ui: функция(e){}».

Есть ли способ, которым я могу использовать оба этих параметра вместе?

Вот ссылка на демонстрационную версию, которую я пытаюсь

Заранее благодарю вас!

Ответ №1:

Установка свойства filter источника данных grid делает свое дело.

      <div id="grid"></div>

    <script>
      var onlyOnce = false;
      $(document).ready(function () {
        var crudServiceBaseUrl = "https://demos.telerik.com/kendo-ui/service",
            dataSource = new kendo.data.DataSource({
              transport: {
                read: {
                  url: crudServiceBaseUrl   "/Products",
                  dataType: "jsonp"
                }              
              },
              filter: {
                                logic: "or",
                                filters: [
                                { field: "ProductName", operator: "eq", value: "Chai" },
                                { field: "ProductName", operator: "eq", value: "Chang" }
                                ]
                            }
            });

        $("#grid").kendoGrid({
          dataSource: dataSource,
          columns: [
              { field: "ProductName", title: "Product Name", filterable:{
                multi:true
              } 
            }
           ],
          filterable: true                    
        });
      });  
    </script>  
  

Комментарии:

1. Привет, Марисса, спасибо за решение, еще один последующий вопрос, сработает ли это, если оператор, который я укажу как «neq» в моем фильтре? Пытаюсь понять это, поскольку я вижу другое поведение с «neq».

2. Привет, Марисса, используя ваше решение выше, я пытаюсь обработать это для 2 или более значений по умолчанию. Либо я не вижу результатов, либо стек браузера достигает своего максимума. Было бы здорово, если бы вы могли помочь мне с этой последней ссылкой на то, что я пытаюсь . Спасибо!

3. @Apeksha пожалуйста, проверьте обновленный фрагмент кода выше.

Ответ №2:

Столбцы.поддается фильтрации.пользовательский интерфейс используется для создания пользовательского меню фильтра, поэтому, если вы решите использовать это, используйте его для создания пользовательского интерфейса фильтра плюс любой инициализации фильтра, которую вы хотите. В случае, если вы хотите просто инициализировать фильтр, используйте событие filtermenuopen filtermenuopen.

 <div id="grid"></div>
    <script>
      $(document).ready(function () {
        var crudServiceBaseUrl = "https://demos.telerik.com/kendo-ui/service",
            dataSource = new kendo.data.DataSource({
              transport: {
                read: {
                  url: crudServiceBaseUrl   "/Products",
                  dataType: "jsonp"
                }              
              }             
            });

        $("#grid").kendoGrid({
          dataSource: dataSource,

          columns: [
                        { field: "ProductName", title: "Product Name", filterable:{
                 multi:true
                } 
            }
           ],
          filterable: true,
          filterMenuOpen: function(e) {
                        if (e.field == "ProductName") {
                        e.container.find("input[type=checkbox]").prop('checked', true);
                        }
                }
        });
      });  
    </script>  
  

Комментарии:

1. Привет, Марисса, спасибо тебе за твое решение. У меня это частично работает. Проблема, которую я вижу здесь, заключается в том, что если я пытаюсь установить только определенные флажки, данные не фильтруются в списке отмеченных. Ссылка на мою демонстрацию . Есть ли способ, которым я могу запустить отправку фильтра, чтобы при начальной загрузке сетки отображались только выбранные строки с флажками? Спасибо!

2. @Apex добавили еще один ответ для решения вашей проблемы.