2014-04-01 55 views
0

我已经jqGrid的表格中显示的话,我有navGrid设置一些属性,像这样:afterSubmit并不总是解雇

$("#opozorila").jqGrid('navGrid', '#opozorilapager', 
    {afterSubmit: reloadGrid},//Note: reloadGrid contains just alert('test'); 
    {afterSubmit: reloadGrid}, 
    {afterSubmit: reloadGrid}); 

这个伟大的工程,如果我选择的行,通过navGrid菜单点击编辑并提交编辑行。但它不起作用,如果我得到这样的编辑弹出:

onSelectRow: function(id) { 
     //var id = $(this).attr('id'); 
     $("#opozorila").jqGrid('editGridRow', id); 
    }, 

基本上它只会触发如果通过navGrid菜单打开弹出。我怎样才能使它在两种方式下工作?

回答

2

首先,您以错误的方式使用navGrid。你应该'#opozorilapager'之后添加{}参数:

$("#opozorila").jqGrid('navGrid', '#opozorilapager', 
    {}, // !!! navGrid options 
    {afterSubmit: reloadGrid},//Note: reloadGrid contains just alert('test'); 
    {afterSubmit: reloadGrid}, 
    {afterSubmit: reloadGrid}); 

现在你的主要问题。回调afterSubmiteditGridRow一个选项(见the documentation),所以你应该将它指定为参数,如果你明确地把它叫做:

onSelectRow: function(id) { 
    $(this).jqGrid('editGridRow', id, {afterSubmit: reloadGrid}); 
} 

如果你有,你打电话editGridRow多个地方,我会建议您保存在一个选项变量和使用该变量navGrid和显式调用的editGridRow

var paramEdit = { afterSubmit: reloadGrid }, 
    paramAdd = { afterSubmit: reloadGrid }, 
    paramDel = { afterSubmit: reloadGrid }, 
    $myGrid = $("#opozorila"); 

... 
$myGrid.jqGrid({ 
    ... 
    onSelectRow: function (rowid) { 
     $(this).jqGrid("editGridRow", rowid, paramEdit); 
    } 
}); 
$myGrid.jqGrid("navGrid", "#opozorilapager", {}, paramEdit, paramAdd, paramDel); 
+0

现在我还有一个问题,如果我重写afterSubmit,然后将其“弹出”无法关闭我点击提交后。在这之前自动完成,但现在我必须手动执行它我想,对吗? – ewooycom

+0

@ user1188570:对不起,但我不能跟着你。如果您发布您使用的'reloadGrid'功能的代码会更容易。函数中的典型错误 - 您不返回任何内容或返回错误的数据。我在我的回答[链接](http://www.trirand.com/jqgridwiki/doku.php?id=wiki%3aform_editing#events)中发布了描述返回数据格式的文档。一个必须返回最多3个元素的数组。第一个布尔值是必需的:'return [true];'如果发生错误,你可以返回错误信息:'return [false,“错误描述”]'。 – Oleg

+0

@ user1188570:在“添加”操作的情况下,服务器可以生成新的rowid并从响应内部的服务器返回它。所以你可以返回new id的值作为从'afterSubmit'返回的数组的三维参数:'return [true,“”,1234];'。编辑和删除的回调函数'afterSubmit'总是只返回具有相同格式的一个或两个元素的数组。 – Oleg