Jqgrid 如何在重新加载JQuery网格时保持复选框选择?
我有一个JQuery网格,每当服务器上发生某个事件(即数据集中的更新)时,我都会重新加载它,并在网格中显示最新的数据集。该网格的第一列中也有复选框。发生的情况是,假设用户正在选择一些复选框,同时,如果由于服务器上的数据更新而重新加载网格,我的网格将重新加载最新的数据集,但我以前选择的所有复选框都将丢失。重新加载网格后,如何再次标记这些选定的复选框 请建议Jqgrid 如何在重新加载JQuery网格时保持复选框选择?,jqgrid,Jqgrid,我有一个JQuery网格,每当服务器上发生某个事件(即数据集中的更新)时,我都会重新加载它,并在网格中显示最新的数据集。该网格的第一列中也有复选框。发生的情况是,假设用户正在选择一些复选框,同时,如果由于服务器上的数据更新而重新加载网格,我的网格将重新加载最新的数据集,但我以前选择的所有复选框都将丢失。重新加载网格后,如何再次标记这些选定的复选框 请建议 function PushData() { // creates a proxy to the Alarm hub var a
function PushData() {
// creates a proxy to the Alarm hub
var alarm = $.connection.alarmHub;
alarm.notification = function () {
$("#jqTable").trigger("reloadGrid",[{current:true}]);
};
// Start the connection and request current state
$.connection.hub.start(function () {
BindGrid();
});
}
function BindGrid() {
jqDataUrl = "Alarm/LoadjqData";
var selectedRowIds;
$("#jqTable").jqGrid({
url: jqDataUrl,
cache: false,
datatype: "json",
mtype: "POST",
multiselect: true ,
postData: {
sp: function () { return getPriority(); },
},
colNames: ["Id", "PointRef", "Value", "State", "Ack State", "Priority", "AlarmDate", "", ""],
colModel: [
//{ name: 'alarmId_Checkbox', index: 'chekbox', width: 100, formatter: "checkbox", formatoptions: { disabled: false }, editable: true, edittype: "checkbox" },
{ name: "AlarmId", index: "AlarmId", width: 70, align: "left" },
{ name: "PointRef", index: "PointRef", width: 200, align: "left" },
{ name: "Value", index: "Value", width: 120, align: "left" },
{ name: "AlarmStateName", index: "AlarmStateName", width: 150, align: "left" },
{ name: "AcknowledgementStateName", index: "AcknowledgementStateName", width: 200, align: "left" },
{ name: "Priority", index: "Priority", width: 130, align: "left" },
{ name: "AlarmDate", index: "AlarmDate", width: 250, align: "left" },
{ name: "TrendLink", index: "Trends", width: 100, align: "left" },
{ name: "MimicsLink", index: "Mimics", width: 100, align: "left" }
],
// Grid total width and height
width: 710,
height: 500,
hidegrid: false,
// Paging
toppager: false,
pager: $("#jqTablePager"),
rowNum: 20,
rowList: [5, 10, 20],
viewrecords: true, // "total number of records" is displayed
// Default sorting
sortname: "Priority",
sortorder: "asc",
// Grid caption
caption: "Telemetry Alarms",
onCellSelect: function (rowid, icol, cellcontent, e) {
var cm = jQuery("#jqTable").jqGrid('getGridParam', 'colModel');
var colName = cm[icol];
//alert(colName['index']);
if (colName['index'] == 'AlarmId') {
if ($("#AlarmDialog").dialog("isOpen")) {
$("#AlarmDialog").dialog("close");
}
AlarmDialogScript(rowid)
}
else if (colName['index'] == 'Trends') {
TrendDialogScript(rowid)
}
else if (colName['index'] == 'Mimics') {
MimicsDialogScript(rowid)
}
else {
$("#jqTable").setCell(rowid, "alarmId_Checkbox", true); //Selects checkbox while clicking any other column in the grid
}
},
recreateFilter: true,
emptyrecords: 'No Alarms to display',
loadComplete: function () {
var rowIDs = jQuery("#jqTable").getDataIDs();
for (var i = 0; i < rowIDs.length; i++) {
rowData = jQuery("#jqTable").getRowData(rowIDs[i]);
//change the style of hyperlink coloumns
$("#jqTable").jqGrid('setCell', rowIDs[i], "AlarmId", "", { 'text-decoration': 'underline', 'cursor': 'pointer' });
$("#jqTable").jqGrid('setCell', rowIDs[i], "TrendLink", "", { 'text-decoration': 'underline', 'cursor': 'pointer' });
$("#jqTable").jqGrid('setCell', rowIDs[i], "MimicsLink", "", { 'text-decoration': 'underline', 'cursor': 'pointer' });
if ($.trim(rowData.AcknowledgementStateName) == 'Active') {
$("#jqTable").jqGrid('setCell', rowIDs[i], "AcknowledgementStateName", "", { 'background-color': 'red', 'color': 'white' });
}
else if ($.trim(rowData.AcknowledgementStateName) == 'Acknowledged') {
$("#jqTable").jqGrid('setCell', rowIDs[i], "AcknowledgementStateName", "", { 'background-color': 'Navy', 'color': 'white' });
}
}
//$("#jqTable").jqGrid('hideCol', "AlarmId") //code for hiding a particular column
},
gridComplete: function () {
$('#jqTable input').bind('mouseover', function () {
var tr = $(this).closest('tr');
if ($("#AlarmDialog").dialog("isOpen")) {
$("#AlarmDialog").dialog("close");
}
AlarmDialogScript(tr[0].id);
}
);
}
}).navGrid("#jqTablePager",
{ refresh: true, add: false, edit: false, del: false },
{}, // settings for edit
{}, // settings for add
{}, // settings for delete
{sopt: ["cn"]} // Search options. Some options can be set on column level
)
.trigger('reloadGrid', [{page:1, current:true}]);
}
函数PushData(){
//创建报警中心的代理
var alarm=$.connection.alarmHub;
alarm.notification=函数(){
$(“#jqTable”).trigger(“reloadGrid”,[{current:true}]);
};
//启动连接并请求当前状态
$.connection.hub.start(函数(){
BindGrid();
});
}
函数BindGrid(){
jqDataUrl=“报警/LoadjqData”;
var选择的单株;
$(“#jqTable”).jqGrid({
url:jqDataUrl,
cache:false,
数据类型:“json”,
mtype:“POST”,
多选:对,
postData:{
sp:function(){return getPriority();},
},
colNames:[“Id”、“PointRef”、“Value”、“State”、“Ack State”、“Priority”、“AlarmDate”、““”、“”],
colModel:[
//{name:'alarmId_Checkbox',index:'chekbox',宽度:100,格式化程序:“Checkbox”,格式化选项:{disabled:false},可编辑:true,edittype:“Checkbox”},
{名称:“AlarmId”,索引:“AlarmId”,宽度:70,对齐:“左”},
{名称:“PointRef”,索引:“PointRef”,宽度:200,对齐:“left”},
{名称:“值”,索引:“值”,宽度:120,对齐:“左”},
{name:“AlarmStateName”,索引:“AlarmStateName”,宽度:150,对齐:“left”},
{name:“AcknowledgementStateName”,索引:“AcknowledgementStateName”,宽度:200,对齐:“left”},
{名称:“优先级”,索引:“优先级”,宽度:130,对齐:“左”},
{名称:“AlarmDate”,索引:“AlarmDate”,宽度:250,对齐:“左”},
{名称:“趋势链接”,索引:“趋势”,宽度:100,对齐:“左”},
{name:“MimicsLink”,索引:“Mimics”,宽度:100,对齐:“left”}
],
//网格总宽度和总高度
宽度:710,
身高:500,
希德格里德:错,
//寻呼
托帕杰:错,
寻呼机:$(“#jqTablePager”),
rowNum:20,
行列表:[5,10,20],
viewrecords:true,显示//“记录总数”
//默认排序
sortname:“优先级”,
分拣员:“asc”,
//网格标题
描述:“遥测警报”,
onCellSelect:函数(rowid、icol、cellcontent、e){
var cm=jQuery(“#jqTable”).jqGrid('getGridParam','colModel');
var colName=cm[icol];
//警报(colName['index']);
if(colName['index']=='AlarmId'){
如果($(“#AlarmDialog”).dialog(“isOpen”)){
$(“报警对话框”)。对话框(“关闭”);
}
AlarmDialogScript(rowid)
}
else if(colName['index']=='Trends'){
趋势对话框脚本(rowid)
}
else if(colName['index']=='Mimics'){
mimicdialogscript(rowid)
}
否则{
$(“#jqTable”).setCell(rowid,“alarmId_复选框”,true);//在单击网格中的任何其他列时选择复选框
}
},
重新创建筛选器:true,
emptyrecords:'没有要显示的报警',
loadComplete:函数(){
var rowIDs=jQuery(“#jqTable”).getDataId();
对于(变量i=0;i
使用
您应该完成您可以在重新加载网格之前保存选择,例如在以下情况下: 然后,在重新加载网格后,可以循环选择
selectedRowIDs
,然后使用setSelection
重新选择每一个。例如:
for (i = 0, count = selectedRowIDs.length; i < count; i++) {
jQuery('#myGrid').jqGrid('setSelection', selectedRowIDs[i], false);
}
selectedRowIDs = jQuery('#myGrid').getGridParam('selarrrow');
for (i = 0, count = selectedRowIDs.length; i < count; i++) {
jQuery('#myGrid').jqGrid('setSelection', selectedRowIDs[i], false);
}