Можно ли сохранить сортировку сетки/фильтр/выделение на grid.refresh() в некотором разумном оптимизированном виде? Мне нужно обновить сетку при событии изменения размера окна, чтобы приспособиться к новому размеру окна. Я предполагаю, что обновление внутренне уничтожает и воссоздает сетку, не учитывая возможные активные сортировки/фильтра/выбора. Поскольку сетка может содержать много данных (виртуальная прокрутка), я бы хотел избежать ненужных запросов, рендеринга и сортировки db. Думаю, я ищу обновление, которое обновит существующие данные.shieldUI фильтр сетки/сохранение сортировки по обновлению сетки
1
A
ответ
0
Я нашел решение в методе обновления самостоятельно. Он принимает объекты опций, в которых можно предоставить текущие параметры источника данных для сохранения. Пример для сохранения сортировки и/или фильтра:
var options = {
dataSource: $("#grid").swidget().dataSource
}
$("#grid").swidget().refresh(options);
Пожалуйста, воздержитесь, если я ошибаюсь. Для выбора я предполагаю, что можно получить выбранные индексы и повторно выбрать после вызова обновления.
EDIT: фильтр и сортировка сохраняются, но сбрасываются строки фильтров (теряет все активные входные значения). Может ли это быть ошибкой? Как сохранить значения в строке фильтра?
1
Швы как они только что реализовали это - вот example.
Возможно, оно будет включено в следующий выпуск.
Вот код в примере, который делает это:
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" }
]
});
});
пожалуйста размещает свой ответ, используя этот пример. – Sachith