Как я могу отобразить любые применяемые критерии фильтра в сетке пользовательского интерфейса Kendo. Я хотел бы иметь дисплей только для чтения применимых критериев. Текущая функциональность позволяет пользователю применять фильтр, но пользователь должен перейти в меню фильтра, чтобы просмотреть детали фильтра.Я хочу отобразить критерии применяемого фильтра на сетке пользовательского интерфейса Kendo
ответ
Источник данных KIU UI не имеет события фильтра, поэтому вам необходимо реализовать это самостоятельно. Затем, когда событие запускается, вы можете получить текущий фильтр и форматировать его любым способом, который вы хотите отобразить.
Например:
var grid = $("#grid").kendoGrid(...);
// override the original filter method in the grid's data source
grid.dataSource.originalFilter = grid.dataSource.filter;
grid.dataSource.filter = function() {
var result = grid.dataSource.originalFilter.apply(this, arguments);
if (arguments.length > 0) {
this.trigger("afterfilter", arguments);
}
return result;
}
// bind to your filter event
grid.dataSource.bind("afterfilter", function() {
var currentFilter = this.filter(); // get current filter
// create HTML representation of the filter (this implementation works only for simple cases)
var filterHtml = "";
currentFilter.filters.forEach(function (filter, index) {
filterHtml += "Field: " + filter.field + "<br/>" +
"Operator: " + filter.operator + "<br/>" +
"Value: " + filter.value + "<br/><br/>";
if (currentFilter.filters.length > 1 && index !== currentFilter.filters.length - 1) {
filterHtml += "Logic: " + currentFilter.logic + "<br/><br/>";
}
});
// display it somewhere
$("#filter").html(filterHtml);
});
См demo here.
Обратите внимание, что фильтры могут быть вложенными, поэтому, когда это произойдет, этого примера кода будет недостаточно - вам нужно будет сделать код, который преобразует фильтры в HTML-рекурсивный.
В целях увеличения всех источников данных с «afterfilter» событие, вы должны изменить DataSource protototype вместо того чтобы изменить его на вашем экземпляре:
kendo.data.DataSource.fn.originalFilter = kendo.data.DataSource.fn.filter;
kendo.data.DataSource.fn.filter = function() {
var result = this.originalFilter.apply(this, arguments);
if (arguments.length > 0) {
this.trigger("afterfilter", arguments);
}
return result;
}
Если вы хотите интегрировать все это во все виджеты сетки, вы можете создать новый метод filtersToHtml
, который получит вам представление HTML и добавит его в kendo.data.DataSource.fn
, как показано выше (или вы могли бы create your own widget, полученный из сетки Кендо); таким же образом вы можете добавить метод displayFilters
в kendo.ui.Grid.fn
(прототип сетки), который отображает это представление HTML в элементе DOM, селектор которого вы можете передать с параметрами вашего виджета (в конечном итоге вы также можете создать этот элемент в виджет сетки). Затем вместо запуска «afterfilter» в методе фильтра вы можете вместо этого называть displayFilters
.
Учитывая сложность полной реализации, которая всегда отображает фильтры, я бы предложил расширить сетку Kendo вместо простого изменения исходного кода. Это поможет сохранить его более ремонтопригодным и придает ему немного структуры.
как насчет объединения двух фильтров сетки. Таким образом, пользователь может видеть выбранный фильтр в текстовом поле и даже удалять его, нажав кнопку «x» в текстовом поле «Отфильтрованное столбец».
вы можете сделать это, установив сетку фильтруемой как этого
filterable: {
mode: "menu, row"
}
документации и примеры в here
- 1. Установить предопределенное значение для фильтра в сетке пользовательского интерфейса Kendo
- 2. Удалите туннель в меню фильтра в сетке пользовательского интерфейса Kendo
- 3. Использование наблюдаемой привязки Kendo в сетке пользовательского интерфейса Kendo
- 4. Как выполнить команду на selectedRow в сетке пользовательского интерфейса Kendo?
- 5. Множество уровней фильтров в сетке пользовательского интерфейса Kendo
- 6. Отображение только двух записей в сетке пользовательского интерфейса Kendo
- 7. Как отображать пустые строки в сетке пользовательского интерфейса Kendo?
- 8. Настройка сетки пользовательского интерфейса Kendo
- 9. Как изменить фильтр в сетке пользовательского интерфейса Kendo?
- 10. Как управлять включенным состоянием кнопки в сетке пользовательского интерфейса Kendo
- 11. Отображение иностранных данных в сетке пользовательского интерфейса Kendo
- 12. Как получить значение флажка в сетке пользовательского интерфейса Kendo?
- 13. Лицензирование пользовательского интерфейса Kendo
- 14. Переопределить пакет данных в сетке пользовательского интерфейса Kendo popup
- 15. Множественные сортировки по умолчанию в сетке пользовательского интерфейса Kendo
- 16. Использование динамического типа в редактируемой сетке пользовательского интерфейса Kendo
- 17. Сделать k-флажок видимым в сетке пользовательского интерфейса Kendo
- 18. Сброс переупорядоченных столбцов в сетке пользовательского интерфейса Kendo
- 19. Управление порядком группы в сетке пользовательского интерфейса Kendo
- 20. Просмотр внешнего ключа в сетке пользовательского интерфейса Kendo
- 21. Получение количества строк в сетке пользовательского интерфейса Kendo
- 22. Как объединить ячейки в сетке пользовательского интерфейса Kendo
- 23. Как настроить действие Destroy() в сетке пользовательского интерфейса Kendo?
- 24. Простая кнопка пользовательского интерфейса Kendo
- 25. Как применять критерии, основанные на сетке Kendo UI?
- 26. Динамический интерфейс пользовательского интерфейса Kendo
- 27. Перезагрузка планировщика пользовательского интерфейса Kendo
- 28. Макс. Дата в интерфейсе пользовательского интерфейса Kendo
- 29. Получите модель пользовательского интерфейса Kendo от перетаскивания на виджет пользовательского интерфейса, отличного от Kendo
- 30. Как отобразить GUID в сетке Kendo?
Как я могу иметь эту логику, как часть самого препояшьтесь. Используя этот пример, я буду иметь эту настраиваемую логику для каждой используемой сетки. Я хочу отобразить примененный фильтр как часть самой сетки. Поэтому в основном необходимо расширить функциональность Grid. –
@Kish_ore Я обновил свой ответ несколькими идеями, которые должны позволить вам реализовать то, что вы после –
Я включил класс KendoGridExtension в JS, чтобы добавить дополнительные функции в сетку (постоянные флажки и т. Д.). –