#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 добавили еще один ответ для решения вашей проблемы.