我的应用程序有一个剑道网格。
我可以使用网格外的几个下拉列表来过滤网格。
当我点击搜索时,我将过滤器添加到数据源过滤器列表中。例如,
var dataSource = $("#grid").data("kendoGrid").dataSource;
var dataSourceFilterQuery = new Array();
if ($("#something").data("kendoDropDownList").value() !== null) {
dataSourceFilterQuery.push({ field: "something", operator: "IsGreaterThanOrEqualTo", value: ($("#something").data("kendoDropDownList").value()) });
}
dataSource.filter(dataSourceFilterQuery);
然后我得到了我想要的结果。有用。 然后,我可以将所有下拉列表的值保存为localStorage中的一个过滤器。
const filtersObject = {
Something: whatever.value(),
...
};
this.storage.setItem("Filter", JSON.stringify(filtersObject));
当我重新启动应用程序时,下拉列表中填充了localStorage中的任何内容
const filter = JSON.parse(localStorage.getItem("Filter"));
$("#something").data("kendoDropDownList").value(filters.whatever || "");
}
问题是,我想在应用程序启动时将这些过滤器(如果它们存在于localStorage中)添加到数据源,以便用户可以看到应用程序启动时保存的过滤器的结果,而不必单击再次搜索。
所以,我想要的是应用这个
var dataSource = $("#grid").data("kendoGrid").dataSource;
var dataSourceFilterQuery = new Array();
if ($("#something").data("kendoDropDownList").value() !== null) {
dataSourceFilterQuery.push({ field: "something", operator: "IsGreaterThanOrEqualTo", value: ($("#something").data("kendoDropDownList").value()) });
}
dataSource.filter(dataSourceFilterQuery);
显示网格之前。
这可能吗?
事先提前。
答案 0 :(得分:1)
使用
配置网格autoBind: false
http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-autoBind
当页面加载时,调用过滤器设置,然后手动触发网格加载(通过dataSource.read())