Сеточный фильтр shieldUI / сохранение сортировки при обновлении сетки
Можно ли сохранить сортировку / фильтрацию / выделение сетки в grid.refresh() каким-то разумным оптимизированным способом? Мне нужно обновить сетку на событие изменения размера окна, чтобы приспособиться к новому размеру окна. Я предполагаю, что обновление внутренне разрушает и воссоздает сетку, не учитывая возможную активную сортировку / фильтр / выборку. Поскольку сетка может содержать много данных (виртуальная прокрутка), я бы хотел избежать ненужных запросов, рендеринга и сортировки в БД. Я думаю, что я ищу обновление, которое обновит существующие данные.
2 ответа
Я нашел решение в методе обновления сам. Он принимает объекты параметров, где можно предоставить текущие параметры источника данных для сохранения. Пример для сохранения сортировки и / или фильтрации:
var options = {
dataSource: $("#grid").swidget().dataSource
}
$("#grid").swidget().refresh(options);
Пожалуйста, оставьте меня правильно, если я ошибаюсь здесь. Для выбора, я думаю, можно получить выбранные индексы и повторно выбрать после вызова обновления.
РЕДАКТИРОВАТЬ: фильтр и сортировка сохраняются, но строка фильтра сбрасывается (теряет все активные входные значения). Может ли это быть ошибкой? Как сохранить значения в строке фильтра?
Швы, как будто они только что реализовали это - вот пример.
Возможно быть включенным в следующий выпуск.
Вот код в примере, который делает это:
jQuery(function ($) {
$("#grid").shieldGrid({
dataSource: {
data: gridData,
schema: {
fields: {
id: { type: Number },
name: { type: String },
company: { type: String },
phone: { type: String },
age: { type: Number },
gender: { type: String }
}
},
filter: {
// create the initial filter in that form
and: [
{ path: "name", filter: "con", value: "John" }
]
}
},
filtering: {
enabled: true
},
paging: true,
columns: [
{ field: "id", width: "250px", title: "ID" },
{ field: "name", title: "Person Name", width: "250px" },
{ field: "company", title: "Company" },
{ field: "phone", title: "Phone", width: "250px" },
{ field: "age", title: "Age" }
]
});
});