我的jqGrid从我的数据库中提取数据非常好,但是我无法理解Add New Row功能的工作原理.
现在,我可以编辑内联数据,但是我无法使用模式框创建一个新行.我错过了这样的额外逻辑:“如果这是一个新行,将其发布到服务器端URL”,而不是修改现有数据. (现在,点击提交仅清除表单并重新加载网格数据.)
该文档指出添加新行是:
jQuery("#editgrid").jqGrid('editGridRow',"new",{height:280,reloadAfterSubmit:false});
但我不知道如何正确使用.我花了很多时间研究演示,但他们似乎都使用外部按钮来触发新行命令,而不是使用我想要的模态窗体.
我的完整代码在这里:
jqGridMy Grid Data
var lastSelectedId;
jQuery('#list').jqGrid({
url:'grid.php',
datatype: 'json',
mtype: 'POST',
colNames:['ID','Name', 'Price', 'Promotion'],
colModel:[
{name:'product_id',index:'product_id', width:25,editable:false},
{name:'name',index:'name', width:50,editable:true, edittype:'text',editoptions:{size:30,maxlength:50}},
{name:'price',index:'price', width:50, align:'right',formatter:'currency', editable:true},
{name:'on_promotion',index:'on_promotion', width:50, formatter:'checkbox',editable:true, edittype:'checkbox'}],
rowNum:10,
rowList:[5,10,20,30],
pager: $('#pager'),
sortname: 'product_id',
viewrecords: true,
sortorder: "desc",
caption:"Database",
width:500,
height:150,
onSelectRow: function(id){
if(id && id!==lastSelectedId){
$('#list').restoreRow(lastSelectedId);
$('#list').editRow(id,true,null,onSaveSuccess);
lastSelectedId=id; }},
editurl:'grid.php?action=save'})
.jqGrid('navGrid','#pager',
{refreshicon: 'ui-icon-refresh',view:true},
{height:280,reloadAfterSubmit:true},
{height:280,reloadAfterSubmit:true},
{reloadAfterSubmit:true})
.jqGrid('editGridRow',"new",{height:280,reloadAfterSubmit:false});
function onSaveSuccess(xhr)
{response = xhr.responseText; if(response == 1) return true; return false;}
如果它更容易,我会愿意废除内联编辑功能,并通过模式框进行编辑和发布.
任何帮助将不胜感激.