Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 保存/提交时重新加载jqGrid_Jquery_Jqgrid - Fatal编程技术网

Jquery 保存/提交时重新加载jqGrid

Jquery 保存/提交时重新加载jqGrid,jquery,jqgrid,Jquery,Jqgrid,我有以下代码可以在双击时输入内联编辑: ondblClickRow: function (row_id) { if(row_id != null) { $('#Products').jqGrid('restoreRow',last_selected_row); $('#Products').jqGrid('saveRow',row_id); $("#Pr

我有以下代码可以在双击时输入内联编辑:

ondblClickRow: function (row_id) {
            if(row_id != null) {
                    $('#Products').jqGrid('restoreRow',last_selected_row);
                    $('#Products').jqGrid('saveRow',row_id);
                    $("#Products").jqGrid('editRow',row_id, true, null, 
                        function(){ $("#Products").trigger("reloadGrid", [{current: true}]); }, 
                        'xtras/Products.php', 
                        null,{},
                        {},{}
                    );
                    $("#Products_ilsave").removeClass('ui-state-disabled');
                    $("#Products_ilcancel").removeClass('ui-state-disabled');
                    $("#Products_ilcancel").removeClass('ui-state-disabled');
                    $("#Products_ilcopy").addClass('ui-state-disabled');
                    $("#Products_iladd").addClass('ui-state-disabled');
            } 
        }
和导航定义:

$("#Products").jqGrid("navGrid", "#Products_pager",
            {search: true, add: false, edit: false, del: true, refreshstate: "current"},
            {},
            {},
            {},
            {},
            {sopt:['eq','ne','cn','bw','bn','ge','le','lt','gt'], multipleSearch:true, showQuery: false}
        )
    .jqGrid("inlineNav", "#Products_pager",
        {add: true, edit: true},
    )
    .navButtonAdd('#Products_pager',{
        caption:"", 
        title:"Copy selected row",
        id:"Products_ilcopy", 
        buttonicon:"ui-icon-copy", 
        onClickButton: function(){
            var srcrowid = $grid.jqGrid('getGridParam', 'selrow');

            if (srcrowid > 0) {
                $('#Products_iladd').click();
                var rowData = $('#Products').jqGrid('getRowData', srcrowid);
                rowData.ID = '';
                rowData.Catalogue = '';
                rowData.UPCEAN = '';
                rowData.copyID = srcrowid;
                $grid.jqGrid('setRowData', 'new_row', rowData);
                var ondblClickRowHandler = $('#Products').jqGrid("getGridParam", "ondblClickRow");
                ondblClickRowHandler.call($("#Products")[0], 'new_row');
            } else {
                alert('Please select a row to copy');
                return false;
            }
        }, 
        position:"last"
    });
正如您所看到的,当我单击“复制”按钮时,将创建一个新行,并调用
ondblClickRow
以进入内联编辑。如果我点击
navGrid
中的保存按钮,它会保存但不会重新加载。如果我按Enter键,它将重新加载,但不会保存任何内容

请问之后如何保存和重新加载网格

--------------更新---------------------

添加、编辑、删除、复制—所有相同的URL—'xtras/Products.php'

url:'xtras/Products.php',
editurl:'xtras/Products.php',
datatype: "json",
mtype:'GET',
$(“#产品”)-是页面上唯一的网格


使用-jqGrid 4.4.2

当前代码中的主要问题如下:只为
editRow
的一个直接调用
指定使用
reloadGrid
的回调。另一方面,您使用的是
inlineav
,它还有另外两个
editRow
调用:一个单击编辑按钮,另一个单击添加按钮。在这种情况下,将不会重新加载网格。“复制选中行”按钮的实现还存在一些其他问题。所以我决定重写你使用的代码。生成的代码可能如下所示

var editOptions={
凯斯:没错,
aftersavefunc:函数(){
var$self=$(本);
setTimeout(函数(){
$self.trigger(“reloadGrid”,[{current:true}]);
}, 50);
},
url:“xtras/Products.php”
},
gridIdSelector=“#产品”,
pagerIdSelector=“#产品_寻呼机”,
$grid=$(gridIdSelector);
$.extend($.jgrid.search{
sopt:[“eq”、“ne”、“cn”、“bw”、“bn”、“ge”、“le”、“lt”、“gt”],
多重搜索:正确
});
//创建网格
$grid.jqGrid({
...
寻呼机:寻呼机选择器,
ondblClickRow:函数(rowid){
var$self=$(此),
savedRow=$self.jqGrid(“getGridParam”、“savedRow”);
如果(savedRows.length>0&&savedRows[0].id!==rowid){
//取消编辑正在编辑的另一行
//双击当前编辑时不取消
$self.jqGrid(“restoreRow”,savedRows[0].id);
}
if(savedRows.length==0){
$self.jqGrid(“editRow”,rowid,editOptions);
}
}
})
.jqGrid(“navGrid”,pagerIdSelector,{add:false,edit:false,refreshstate:“current”})
.jqGrid(“inlineNav”,pagerIdSelector,{editParams:editOptions,addParams:{addRowParams:editOptions}})
.jqGrid(“NavButtonAd”,页面选择器{
标题:“,
标题:“复制所选行”,
id:$grid[0]。id+“\u ilcopy”,
按钮图标:“ui图标复制”,
onclick按钮:函数(){
var$self=$(this),p=$self.jqGrid(“getGridParam”),rowData,
srcrowid=p.selrow,savedRows=p.savedRow;
if(srcrowid!==null){
如果(savedRows.length>0){
//取消编辑
$self.jqGrid(“restoreRow”,savedRows[0].id);
}
rowData=$self.jqGrid(“getRowData”,srcrowid);
rowData.ID=“”;
rowData.catalog=“”;
rowData.UPCEAN=“”;
rowData.copyID=srcrowid;
$self.jqGrid(“addRow”{
initdata:rowData,
addRowParams:editOptions
});
}否则{
警报(“请选择要复制的行”);
返回false;
}
}
});
//启用/禁用编辑开始/结束时的按钮
$grid.bind(“jqGridInlineEditRow JQGridInlineAfterAverow jqGridInlineAfterRestoreRow”,函数(){
var$self=$(此),
savedRow=$self.jqGrid(“getGridParam”、“savedRow”);
如果(savedRows.length>0){
//某行正在编辑
$(GridSelector+“\u ilsave,”+GridSelector+“\u ilcancel”).removeClass(“ui状态已禁用”);
$(GridSelector+“_ilcopy,”+GridSelector+“_iladd,”+GridSelector+“_iledit”).addClass(“ui状态已禁用”);
}否则{
//现在没有行正在编辑
$(gridIdSelector+“\u ilsave,”+gridIdSelector+“\u ilcancel”).addClass(“ui状态已禁用”);
$(gridIdSelector+“\u ilcopy,”+gridIdSelector+“\u iladd,”+gridIdSelector+“\u iledit”)。removeClass(“ui状态已禁用”);
}
});

您可以看到,我定义了一个对象
editOptions
,稍后将其用作所有情况下的
editRow
选项。此外,我还使用jqGrid的
savedRow
参数,该参数保存有关当前编辑(关于内联或单元格编辑)行的信息。如果
savedRow
是空数组,则现在不编辑任何行。如果不为空,则数组项的
id
属性包含编辑行的rowid。在“复制所选行”按钮的onClick处理程序中,我还使用了直接调用
addRow
方法。

在所有jqGrid问题中,了解以下几点很重要:您使用的是哪个
datatype
?是否需要从服务器本地重新加载的数据?您使用哪个
editurl
?您是在本地还是在服务器上编辑和保存数据?Ir
$(“#产品”)
同一个网格还是另一个网格?您使用哪个版本的jqGrid和jqGrid的哪个分支(旧jqGrid、免费jqGrid、Guriddo jqGrid JS)?@Oleg Hi,当然抱歉。。。我已经更新了帖子…嗨,奥列格,我理解了你的解释和代码-我了解了副本中对
addRow
的直接调用,以及你为什么要使用
editOptions
对象。我不知道有
savedRow
参数,所以这很有帮助。稍后我将尝试您的代码,并让您知道。您的代码几乎按预期工作。。但是
保存
按钮始终处于禁用状态。。。。因为它只在
savedRows.length>0上启用,而
save
之后调用它。。。顺便说一句,您在
initdata:rowData
@Elen:您没有提供复制代码的演示,所以我