Jquery jqGrid:将新数据分配给网格后,保留排序、分页和筛选工具栏选择
我有带分页、排序、过滤器工具栏和两个下拉列表的jqgrid,当数据上发生任何CRUD操作时,我正在使用signalR。服务器发送刷新json并将其重新绑定到网格 在将新的json重新绑定到网格后,我想在dropdownlistin filtertoolbar和inputfields以及filtertoolbar中保留旧的排序、分页和值。请帮助 这是我正在使用的代码Jquery jqGrid:将新数据分配给网格后,保留排序、分页和筛选工具栏选择,jquery,sorting,jqgrid,grid,paging,Jquery,Sorting,Jqgrid,Grid,Paging,我有带分页、排序、过滤器工具栏和两个下拉列表的jqgrid,当数据上发生任何CRUD操作时,我正在使用signalR。服务器发送刷新json并将其重新绑定到网格 在将新的json重新绑定到网格后,我想在dropdownlistin filtertoolbar和inputfields以及filtertoolbar中保留旧的排序、分页和值。请帮助 这是我正在使用的代码 function PopulateOrdersTable(CCOrder) { var gridPageNumber = 1
function PopulateOrdersTable(CCOrder) {
var gridPageNumber = 1;
if ($(".ui-pg-input").val() != "1" && $(".ui-pg-input").val() != undefined) {
gridPageNumber = $(".ui-pg-input").val();
}
var sortColumnName = $("#jqgrid").jqGrid('getGridParam', 'sortname');
var sortOrder = $("#jqgrid").jqGrid('getGridParam', 'sortorder');
$('#jqgrid').jqGrid('GridUnload');
if (CCOrder != null) {
jQuery("#jqgrid").jqGrid({
data: CCOrder,
datatype: "local",
height: 'auto',
ignoreCase: true,
stringResult: true,
colNames: ['#', 'Driver', 'Customer', 'Order Time', 'Delivery Time', 'ETA (Min(s))', 'Amount (AED)', 'Status'],
colModel: [{
name: 'OrderId',
index: 'OrderId',
width: 50
}, {
name: 'DriverName',
index: 'DriverName',
width: 120,
sorttype: "string"
}, {
name: 'CustomerName',
index: 'CustomerName',
width: 120,
sorttype: "string"
}, {
name: 'StringOrderTime',
index: 'StringOrderTime',
sorttype: "date",
width: 80,
sopt: ['eq'],
}, {
name: 'StringDeliveryTime',
index: 'StringDeliveryTime',
sorttype: "date",
width: 80,
sorttype: "string",
sopt: ['eq'],
}, {
name: 'StringCustomerETA',
index: 'StringCustomerETA',
sorttype: "number",
width: 70,
sopt: ['eq'],
}, {
name: 'OrderAmount',
index: 'OrderAmount',
width: 50,
sorttype: "number",
sopt: ['eq'],
}, {
name: 'OrderStatus',
index: 'OrderStatus',
width: 150,
sorttype: "string"
}],
afterRefresh: function () { ("#jqgrid").jqGrid('setGridParam', { search: true }); },
rowNum: 5,
//rowList: [5, 10, 15],
pager: '#pjqgrid',
sortname: 'CustomerETA',
toolbarfilter: true,
viewrecords: true,
sortorder: "asc",
autowidth: true,
onSelectRow: function (id) {
var myGrid = $('#jqgrid'),
selRowId = myGrid.jqGrid('getGridParam', 'selrow'),
celValue = myGrid.jqGrid('getCell', selRowId, 'OrderId');
PopulateOneDriverOneOrder(celValue);
}
});
setSearchSelect('OrderId', CCOrder);
setSearchSelect('DriverName', CCOrder);
setSearchSelect('CustomerName', CCOrder);
setSearchSelect('OrderStatus', CCOrder);
$("#jqgrid").jqGrid('filterToolbar', { autosearch:true, searchOnEnter: false, defaultSearch: "cn" });
//$("#jqGrid").setGridParam({datatype: 'json', url:'/get_data.php'});
$("#jqgrid")[0].triggerToolbar();
$(".ui-jqgrid").removeClass("ui-widget ui-widget-content");
$(".ui-jqgrid-view").children().removeClass("ui-widget-header ui-state-default");
$(".ui-jqgrid-labels, .ui-search-toolbar").children().removeClass("ui-state-default ui-th-column ui-th-ltr");
$(".ui-jqgrid-pager").removeClass("ui-state-default");
$(".ui-jqgrid").removeClass("ui-widget-content");
// add classes
$(".ui-jqgrid-htable").addClass("table table-bordered table-hover");
$(".ui-jqgrid-btable").addClass("table table-bordered table-striped");
$(".ui-pg-div").removeClass().addClass("btn btn-sm btn-primary");
$(".ui-icon.ui-icon-plus").removeClass().addClass("fa fa-plus");
$(".ui-icon.ui-icon-pencil").removeClass().addClass("fa fa-pencil");
$(".ui-icon.ui-icon-trash").removeClass().addClass("fa fa-trash-o");
$(".ui-icon.ui-icon-search").removeClass().addClass("fa fa-search");
$(".ui-icon.ui-icon-refresh").removeClass().addClass("fa fa-refresh");
$(".ui-icon.ui-icon-disk").removeClass().addClass("fa fa-save").parent(".btn-primary").removeClass("btn-primary").addClass("btn-success");
$(".ui-icon.ui-icon-cancel").removeClass().addClass("fa fa-times").parent(".btn-primary").removeClass("btn-primary").addClass("btn-danger");
$(".ui-icon.ui-icon-seek-prev").wrap("<div class='btn btn-sm btn-default'></div>");
$(".ui-icon.ui-icon-seek-prev").removeClass().addClass("fa fa-backward");
$(".ui-icon.ui-icon-seek-first").wrap("<div class='btn btn-sm btn-default'></div>");
$(".ui-icon.ui-icon-seek-first").removeClass().addClass("fa fa-fast-backward");
$(".ui-icon.ui-icon-seek-next").wrap("<div class='btn btn-sm btn-default'></div>");
$(".ui-icon.ui-icon-seek-next").removeClass().addClass("fa fa-forward");
$(".ui-icon.ui-icon-seek-end").wrap("<div class='btn btn-sm btn-default'></div>");
$(".ui-icon.ui-icon-seek-end").removeClass().addClass("fa fa-fast-forward");
if (gridPageNumber != 1) {
grid = $('#jqgrid')
grid.setGridParam({
page: gridPageNumber,
sortname: sortColumnName,
sortorder: sortOrder,
});
grid.trigger("reloadGrid");
}
else
{
grid = $('#jqgrid')
grid.setGridParam({
sortname: sortColumnName,
sortorder: sortOrder,
});
grid.trigger("reloadGrid");
}
}
}
你的问题应该包括更多的细节。重新绑定可以用许多不同的方式进行解释。你必须看看你做了什么才能帮助你。可能来自的代码可以帮助您,但我只是尝试猜测,因为我不确定我是否正确理解您的操作。好的,我的数据在dbserver中的表中更新后,将立即刷新网格。然后json从服务器发送到客户端,然后我将新数据重新绑定到网格。例如,在此过程中,如果有人正在过滤某些记录或任何其他内容,则文件管理器会被重置,并且该人必须再次过滤,我会设法保存页码和排序,但仍然无法保存过滤器选项我也将signalR与jqGrid结合使用,但是你应该明白,一个人可以为你写的东西写很多不同的实现。如果你只是解释一下你在做什么,而不是发布代码片段,恐怕没有人能帮你。如果您正确地更新了数据,那么在jqGrid中更新数据之后,可能可以调用triggerToolbar。我可以将你的问题与以下问题进行比较:我有一个不符合我要求的程序。你能帮我解决这个问题吗?很明显,您的描述并不常见,但仍然没有足够的详细信息。triggerToolbar适用于我谢谢您的支持欢迎您!我很高兴能帮助你。我建议你看一下自述文件和其他的。它包含许多增强功能。特别是对开箱即用的支持可能会让您感兴趣。代码发布在所有存储库中,可以从中访问。