jqGrid:navGrid reloadAfterSubmit在editurl无效时不添加新行

jqGrid:navGrid reloadAfterSubmit在editurl无效时不添加新行,jqgrid,Jqgrid,我试图在jqGrid中测试添加新行和删除行,我发现网格不会刷新以显示新行,也不会在添加/删除行后删除删除的行。服务器端部分还没有准备好添加/删除,所以我只是将用于将数据加载到网格中的相同url提供给editurl .navGrid('#' + id + '-pager', {addtext: 'Add Code Value', deltext: 'Delete Code Value', edit:false,add:true,del:true,search:false,

我试图在jqGrid中测试添加新行和删除行,我发现网格不会刷新以显示新行,也不会在添加/删除行后删除删除的行。服务器端部分还没有准备好添加/删除,所以我只是将用于将数据加载到网格中的相同url提供给editurl

.navGrid('#' + id + '-pager',
            {addtext: 'Add Code Value', deltext: 'Delete Code Value', edit:false,add:true,del:true,search:false, refresh:false},
            {closeAfterAdd: true, reloadAfterSubmit: true} /* Edit options */,
            {closeAfterAdd: true, reloadAfterSubmit: true} /* Add options */,
            {reloadAfterSubmit: true} /* Delete options */);
我是不是遗漏了什么?我认为reloadAfterSubmit应该用添加/删除的行更新网格

谢谢

已编辑:我的自定义添加功能不必要地复杂(注意:这应该是客户端添加)

如果您使用虚拟URL,那么它可能不会响应HTTP POST请求。您可以使用
mtype:“GET”
选项来解决此问题。在这种情况下,您可以使用来自同一站点的任何现有服务器URL,如
“/”

.navGrid(“#”+id+“-pager”,
{addtext:'添加代码值',deltext:'删除代码值',
编辑:false,添加:true,删除:true,搜索:false,刷新:false},
{mtype:“GET”,closeAfterAdd:true,reloadAfterSubmit:true}/*编辑选项*/,,
{mtype:“GET”,closeAfterAdd:true,reloadAfterSubmit:true}/*添加选项*/,,
{mtype:“GET”,reloadAfterSubmit:true}/*删除选项*/);
作为jqGrid的
editurl
参数,您可以使用任何现有的URL,如
editurl:“/”

如果您使用虚拟URL,那么它可能不会响应HTTP POST请求。您可以使用
mtype:“GET”
选项来解决此问题。在这种情况下,您可以使用来自同一站点的任何现有服务器URL,如
“/”

.navGrid(“#”+id+“-pager”,
{addtext:'添加代码值',deltext:'删除代码值',
编辑:false,添加:true,删除:true,搜索:false,刷新:false},
{mtype:“GET”,closeAfterAdd:true,reloadAfterSubmit:true}/*编辑选项*/,,
{mtype:“GET”,closeAfterAdd:true,reloadAfterSubmit:true}/*添加选项*/,,
{mtype:“GET”,reloadAfterSubmit:true}/*删除选项*/);

作为jqGrid的
editurl
参数,您可以使用任何现有URL,如
editurl:“/”

Hmm…仍然看不到添加的新行。如果希望在客户端添加新行而不向服务器发送更改,我需要做什么?此url似乎演示了如何在本地添加行而不发布到服务器,但无法确定必须设置什么参数才能启用此功能:@Ramya:在本地添加新行非常简单:您可以使用
addRowData
。我似乎不是你在问题中所问的。我想我正在尝试做一些简单的事情,但我的代码反映了其他方面:)因此,我尝试单击navgrid添加按钮,并在网格中显示一个空的可编辑行。当我单击“添加”按钮时,此行将在编辑模式下自动显示输入框。没有需要发生的服务器端post。网格的初始数据加载来自json格式的服务器。我编辑了原始帖子以添加我的自定义addfunc,我使用它来添加可编辑行。当用户再次单击add时,行数据被添加到网格客户端,并生成一个新的可编辑行。我想知道是否有更简单的方法来实现这一点?谢谢@Oleg的帮助…嗯…仍然没有看到添加新行。如果希望在客户端添加新行而不向服务器发送更改,我需要做什么?此url似乎演示了如何在本地添加行而不发布到服务器,但无法确定必须设置什么参数才能启用此功能:@Ramya:在本地添加新行非常简单:您可以使用
addRowData
。我似乎不是你在问题中所问的。我想我正在尝试做一些简单的事情,但我的代码反映了其他方面:)因此,我尝试单击navgrid添加按钮,并在网格中显示一个空的可编辑行。当我单击“添加”按钮时,此行将在编辑模式下自动显示输入框。没有需要发生的服务器端post。网格的初始数据加载来自json格式的服务器。我编辑了原始帖子以添加我的自定义addfunc,我使用它来添加可编辑行。当用户再次单击add时,行数据被添加到网格客户端,并生成一个新的可编辑行。我想知道是否有更简单的方法来实现这一点?谢谢@Oleg的帮助。。。
addfunc = function() {
//Find dirty unsaved row if any and add to the grid before adding empty row

                var dirtyRow = jQuery('#' + id).find('tr[editable]');
                var dirtyRowId = dirtyRow.attr('id');
                if (dirtyRow.length > 0) {
                    dirtyRow.addClass('data-isDirty', true);
                    var rowData = jQuery('#' + id).jqGrid('getRowData', dirtyRowId);
                    jQuery('#' + id).jqGrid('addRowData', rowId, dirtyRowId);
              //The row when added to the grid should not be editable but a normal row

                dirtyRow.find('input').each(function() {
                        var text = jQuery(this).attr('value');
                        jQuery(this).replaceWith(text);
                    });
                }
                var rowId = Math.floor(Math.random()*1000) + 'add_new';
                jQuery('#' + id).jqGrid('addRowData', rowId, that.getEmptyRow(colModel), 'first');
                var firstRowId = jQuery('#' + id).jqGrid('getDataIDs')[0];

                            //Add an empty editable row at the top
                jQuery('#' + id).jqGrid('editRow', firstRowId);
            }