我无法获得 editData 或 onclickSubmit 来做我需要的事情。
我希望网格在更新后跟随添加或编辑的行。所以,我需要发布一些额外的信息,以便服务器可以返回添加/编辑记录的 id 和正确页面。
我可以使用 addfunc 和 editfunc 以及自定义表单来做到这一点,但我想用 jqgrid 生成的表单来做到这一点。
我在 DocumentReady 函数之前声明了一个全局变量。然后,我尝试在编辑参数中使用 editData 并在 beforeSubmit 或 beforeInitData 中设置变量。变量发布到服务器,但仅在它们最初声明时发布。似乎 editData 是在初始化时创建的,无法更新。我也尝试使用 onclickSubmit,但也无法正常工作。
这是一个经过编辑的示例:
var data2pass = {};
data2pass['sortColumnName'] = '';
data2pass['sortOrder'] = '';
data2pass['rowNum'] = '';
$(document).ready(function(){
$("#ProdGrid").jqGrid({
url:'products_DAT.php?thespot=server_ProdGrid',
datatype: 'json',
mtype: 'POST',
colNames:['ID','Product Name:','Category:','Unit Price:'],
colModel :[
{name:'ProductID', editable:true},
{name:'ProductName', editable:true},
{name:'CategoryID', editable:true, edittype:"select", editoptions: { dataUrl: "products_DAT.php?thespot=select4_CategoryID" }},
{name:'UnitPrice', align:'right', editable:true, formatter:'currency'}
],
pager: '#ProdGrid_pager',
rowNum: 15,
sortname: 'ProductName',
sortorder: 'asc',
gridview: true,
editurl: 'products_DAT.php?thespot=update_ProdGrid',
height: 'auto'
});
$("#ProdGrid").jqGrid('navGrid','#ProdGrid_pager', {},
{closeAfterEdit:true, reloadAfterSubmit: false, editData: data2pass,
beforeInitData: function(formid) {
data2pass['sortColumnName'] = 'ProductName';
data2pass['sortOrder'] = 'asc';
data2pass['rowNum'] = '15';
}
}, // Edit parameters
{}, // Add Parameters
{reloadAfterSubmit:true}, // Delete parameters
{}, // Search params
{} // View params
);
但是,最初声明的 data2pass 变量是发布到服务器的内容。我应该使用什么事件来更新 data2pass 的值以发布到服务器?或者还有其他更好的方法吗?
任何意见是极大的赞赏。
谢谢