gpt4 book ai didi

jquery - 加载 Telerik MVC 网格状态

转载 作者:行者123 更新时间:2023-12-01 04:49:17 25 4
gpt4 key购买 nike

我在保存/加载 Telerik MVC 网格控件的状态时遇到一些问题。

我发现许多使用 Kendo 网格的示例,但是我们没有访问权限或资源将我们的系统从原始 Telerik MVC 网格更改为 Kendo。

我可以使用 Cookie 保存和加载网格的当前状态,代码如下:

function setState() {
var pricingGrid = $("#PricingGrid").data("tGrid");
var dataSource = pricingGrid.dataSource;
var state = JSON.stringify({
page: pricingGrid.page,
pageSize: pricingGrid.pageSize,
sort: pricingGrid.orderBy,
group: pricingGrid.groupBy,
filter: pricingGrid.filterBy
});

$.cookie("pricingGridState", state);
}


function loadState() {
var grid = $("#PricingGrid").data("tGrid");
var state = JSON.parse($.cookie("pricingGridState"));
if (state)
{
grid.sort(state.sort);
grid.pageTo(state.page);
grid.filter(state.filter);
}
}

此代码似乎可以解决问题,但它会为每个方法(排序、pageTo 和过滤器)触发重新绑定(bind)调用。我计划保存页面上多个网格的状态,并且不想让每个网格在页面加载时重新绑定(bind) 3 次。

在 Kendo 中,我似乎能够使用“grid.dataSource.query”方法,但我似乎无法在 Telerik MVC 中使用类似的方法。

感谢任何帮助!

注意:我还尝试从 grid.dataSource 属性中保存 State 对象,但这些似乎根本没有加载网格状态。

最佳答案

经过一些研究,我找到了适合我的解决方案。这是我所做的:

//Prevent auto binding of grid and load state from cookie
var gridsToBind = [];
function CommonGrid_onDataBinding(e) {
if ($.inArray(e.target.id, gridsToBind) == -1) {
e.preventDefault();
gridsToBind.push(e.target.id);
LoadGridState();
}
}
function LoadGridState() {
var grid = $("#CommonGrid").data('tGrid');
var state = $.cookie("gridState");
if (state) {
state = JSON.parse(state);
grid.currentPage = state.currentPage;
grid.orderBy = state.orderBy;
grid.filterBy = state.filterBy;
grid.pageSize = state.pageSize;
for (var i in state.filteredCols) {
if (state.filteredCols.hasOwnProperty(i)) {
grid.columns[i].filters = state.filteredCols[i].filters;
$("a[href*='=" + grid.columns[i].member + "-'").siblings(".t-grid-filter").addClass("t-active-filter");
}
}
$("#CommonGrid").data('tGrid', grid);
}
grid.ajaxRequest();
}

//Logic to save state of grid in cookie
function CommonGrid_OnDataBound(e) {
var filteredCols = {};
$.each(grid.columns, function (i, n) {
if (!!n.filters) {
filteredCols[i] = n;
}
});
var state = JSON.stringify({
currentPage: grid.currentPage,
orderBy: grid.orderBy,
filterBy: grid.filterBy,
pageSize: grid.pageSize,
filteredCols: filteredCols
});
$.cookie("gridState", state);
}

关于jquery - 加载 Telerik MVC 网格状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com