shieldUI 网格过滤器/网格刷新时的排序持久性

shieldUI grid filter / sort persistence on grid refresh

是否有可能以某种智能优化方式在 grid.refresh() 上保留网格 sort/filter/selection?我需要在 window resize 事件上刷​​新网格以调整到新的 window 大小。我想刷新会在内部破坏并重新创建网格,而不是考虑可能的活动 sort/filter/selection。因为网格可以包含大量数据(虚拟滚动),所以我想避免不必要的数据库查询、渲染和排序。我想我正在寻找将刷新现有数据的刷新。

我自己在刷新方法中找到了解决方案。它接受选项对象,其中可以提供当前数据源选项来持久化。持久排序 and/or 过滤器的示例:

var options = {
    dataSource: $("#grid").swidget().dataSource
}
$("#grid").swidget().refresh(options);

如果我在这里错了,请支持我纠正。对于选择,我想可以检索选定的索引并在调用刷新后重新选择。

编辑:保留筛选和排序,但筛选行重置(丢失所有活动输入值)。这可能是一个错误吗?如何将值保留在筛选行中?

接缝就像他们刚刚实现的一样 - 这是 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" }
        ]
    });
});