Сеточный фильтр 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" }
        ]
    });
});
Другие вопросы по тегам