【问题标题】:JQGRID - Prevent adding empty row after execution of afterSubmitJQGRID - 防止在执行 afterSubmit 后添加空行
【发布时间】:2012-03-30 13:23:45
【问题描述】:

我有一个网格,我在导航网格中放置了一个自定义按钮,用于在另一个表中插入完全不同的数据,所以我使用了 editGridRow("new",...) 在 php url 中我只是将数据发布到另一个表中。实际上,如果我提交表单,我会遇到这个问题,即使我解决了 reloadAfterSubmit:false,它也会在网格中添加一个新的空行……

你可以在这里看到这段代码:

jQuery("#"+child_table_id).navButtonAdd("#"+pager_id,
{
caption:"Insert",buttonicon:"ui-icon-arrow-1-se",
onClickButton:function(){ 
    var rows = jQuery("#"+child_table_id).getRowData(); 
    if ( rows.length != 0 ) { 
        jQuery("#"+child_table_id).editGridRow("new",{height:140,width:420,url:"http://.../edit_datatable.php?table_name=mytable&fact=insert&q=1&flag=yes&ref_id="+id_row,
    reloadAfterSubmit:false, 
    recreateForm:true, 
    closeOnEscape:true, 
    closeAfterAdd:true,
    addCaption:'Insert',
savekey: [true,13],
    bSubmit:'Save',
    afterSubmit:function(response, postdata){ alert('inserting to a total different table...'); return {0:true} } 
});
}
},
position:"last",
title:"Insert new step...",
cursor:"pointer"
});

我什至尝试添加:

onClickButton:function(){ $("#"+child_table_id).setGridParam({ datatype: 'local' }); }

afterSubmit:function(response, postdata){ return {0:true} },

onclickSubmit : function(params, posdata) {return {0:true} },

afterComplete:function(response, postdata, formid) { $("#"+child_table_id).setGridParam({ datatype: 'json' }); }

但它还是在网格中添加了一行……

那么如何防止 jqGrid 添加新的空网格并刷新网格?...

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    您写了关于“在另一个表中插入完全不同的数据”的文章,但是您将按钮添加到网格 "#"+child_table_id 的导航栏,并且您在 onClickButton 回调中的代码将新行添加到 同一个网格:

    jQuery("#"+child_table_id).navButtonAdd("#"+pager_id, { ...
        onClickButton:function(){
            ...
            jQuery("#"+child_table_id).editGridRow("new", ...
        }
     });
    

    如果您真的想将新行添加到 another 网格,您应该在 editGridRow 中使用另一个的 id(如 jQuery("#"+another_table_id).editGridRow("new",...)。

    【讨论】:

    • 您好奥列格,首先感谢您的回答。我会更好地解释......我在他们之间独立地玩行。具体来说,我说的是完全不同的表,而不是网格,但实际上我是在同一个表中添加,但没有在同一个网格中添加,而是创建一个新的网格节点,就像它是独立的但与我单击的当前网格中的选定行相关在自定义按钮上。至少有没有一种可能的替代方法来避免在同一个网格中插入回调?谢谢!路易吉
    • @LuigiN.Puleio:可以避免在同一个网格中插入数据,而在另一个网格中插入数据。为此,您应该将editGridRow 应用于destination 网格,例如jQuery("#"+another_table_id).editGridRow("new",...)。可能您不想在任何网格中插入数据?可能您只想将数据发送到将其插入数据库表的服务器?在这种情况下,您应该使用jQuery.ajax 或函数的一些简化版本,例如jQuery.post
    • @LuigiN.Puleio:对不起,我什么都不懂。你写了“在另一个表中插入完全不同的数据”,然后你写了“在同一个表中添加一条记录,加载编辑器并插入数据,但不插入任何网格”。您是要向网格中添加行还是要使用其他数据重新创建网格?如果您需要任何帮助,您应该更清楚地描述您想要做什么以及您目前遇到的问题。
    • 没有 Oleg,我只想在加载编辑器的同一个表中添加一条记录并插入数据,但不插入任何网格。然后在插入行之后,我会在当前网格加载正确插入的记录之后插入一个新的 jqGrid() 。更准确地说,我有一个主网格,其中一些记录是子网格;在里面我放了一个带有记录的新网格和两列YES和NO,它们是按钮。按下这些按钮将在当前网格之后添加一个新网格。在导航网格中,我添加了一个自定义按钮,它将插入而不是附加新网格。有没有办法?...
    • @LuigiN.Puleio:对不起,我无法关注你,但我怀疑你尝试以错误的方式使用 jqGrid 和行编辑。
    猜你喜欢
    • 2012-01-10
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    相关资源
    最近更新 更多