我一直在試圖弄清楚這段時間。似乎很多其他人也問過類似的問題,但我還沒有找到具體的解決方案。無論如何,我有一個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的新手,所以沒有想到這一點。