我一直在试图弄清楚这段时间。似乎很多其他人也问过类似的问题,但我还没有找到具体的解决方案。无论如何,我有一个jqgrid,我正在使用大型数据集。我只在几千条记录中每次分页100条记录。我想要做的是添加一条新纪录。将它发送到返回新记录ID的服务器,然后能够获取我新添加的记录所在的排序数据部分,并将其定位到网格中的那一行。如何使用reloadAfterSubmit定位到jqgrid中新添加的行:true
这里是我的网格定义:
$("#list1").jqGrid({
url: 'jqgrid.php?cmd=getrecs',
editurl: 'jqgrid.php?cmd=editrec',
datatype: 'json',
colNames:['Branch', 'Description', 'Type', 'Active' ],
colModel :[
{name:'rbranch',
index:'rbranch',
sortable:true,
editable:true
},
{name:'des',
index:'des',
sortable:true,
editable:true
},
{name:'type',
index:'type',
sortable:true,
editable:true
},
{name:'status',
index:'status',
sortable:false,
editable:true
}
],
pager: '#pager1',
sortname: 'rbranch',
sortorder: 'asc',
rowNum: 100, // Only fetch 100 at a time
viewrecords: true,
scroll: 1,
sortable: true,
caption: 'Scheduling Resources'
});
$("#list1).navGrid("#pager1",
// Turn on the icons
{edit:true,
add:true,
del:true,
search:true,
refresh:true,
refreshstate:'current',
view:true
},
// Edit dialog parameters
{reloadAfterSubmit: false,
closeAfterEdit: true
},
// Add dialog parameters
{reloadAfterSubmit: true,
afterSubmit: function (response) {
var x = $.parseJSON(response.responseText).userdata.newID;
alert(x);
return [true, '', "Saved"];
},
closeAfterAdd: true
},
// Delete dialog parameters
{reloadAfterSubmit: false},
// Search dialog parameters
{},
// View dialog parameters
{}
);
使用afterSubmit我可以通过JSON返回它获得新创建的ID值。
我已经找到正确的记录集并可以返回它的服务器上的例程。但是,我对如何将这个新的ID加回到服务器上感到茫然。
如果使用“reloadAfterSubmit:true”(我需要使用新记录)检查Grid Add的工作方式,它实际上会对服务器进行两次调用。第一次调用使用网格中的“editurl:”,它告诉服务器所有新的字段,并让我创建并发送新的ID。然后它再次调用服务器,以便使用来自刚刚获取第一页的网格中的“url:”获取新的记录集。
我想我可以做我想做的事,如果我只能将第一次调用的新ID作为参数传递给第二次调用。也许有一个真正简单的方法来做到这一点,但我是jquery和jqgrid的新手,所以没有想到这一点。