使用 inlineNav 刷新的 jqGrid 不适用于 extraparams

jqGrid using inlineNav refresh not working with extraparams

按照之前 post 中的解决方案后,我发现如果存在 extraparams,使用 successfunc 的 inlineNav 在 add/edit 后 jqGrid 刷新不起作用。

这是我的代码:

var editOptions = {    
keys: true,
successfunc: function () {
    alert('success');
    var $self = $(this);
    setTimeout(function () {
        alert('refreshing');
        $self.setGridParam({ datatype: 'json' });
        $self.trigger("reloadGrid");
    }, 500);
} 


 .jqGrid('inlineNav', {
                addParams: {
                    useDefValues: true,
                    addRowParams: 
                    {
                        editOptions,
                        extraparam: {
                                userId: function () {
                                    return currentUserId;
                                },
                                companyId: function () {
                                    return currentCompanyId;
                                }
                        }
                    }                        
                },
                editParams: {
                    editOptions
                }

我尝试了 editOptions 放置位置的不同组合,但没有成功。

您将 extraparam 放错了地方。应该是editOptions的属性.

更新:

var reloadGridFunc = function () {
    alert('success');
    var $self = $(this);
    setTimeout(function () {
        alert('refreshing');
        $self.setGridParam({ datatype: 'json' });
        $self.trigger("reloadGrid");
    }, 500);
};


.jqGrid('inlineNav', {
            addParams: {
                useDefValues: true,
                addRowParams: {
                    // here are editOption used for Add
                    keys: true,
                    successfunc: reloadGridFunc,
                    extraparam: {
                            userId: function () {
                                return currentUserId;
                            },
                            companyId: function () {
                                return currentCompanyId;
                            }
                    }
                }                        
            },
            editParams: {
                // here are editOption used for Edit
                keys: true,
                successfunc: reloadGridFunc
            }
        });

好的 - 我发现我做错了什么。它实际上在我上面的代码的两个部分中。首先,我改变了:

function successFunc() {   
var $self = $(this);
setTimeout(function () {        
    $self.setGridParam({ datatype: 'json' });
    $self.trigger("reloadGrid");
}, 500);}

我摆脱了 var editOptions,其中包含 keys 和 successfunc 参数。这显然与 inlineNav 方法的 addParams 部分中的 successfunc 调用冲突。所以这是参数部分现在的样子:

 .jqGrid('inlineNav', {
                addParams: {
                    addRowParams:
                    {
                        keys: true,
                        extraparam: 
                         { userId: currentUserId, 
                           companyId: currentCompanyId 
                        },
                        successfunc: successFunc
                    }
                },
                editParams: {
                    successfunc: successFunc
                }
            });

所以现在当我添加或编辑内联记录时,刷新会在调用 successfunc 时发生。希望这对将来的其他人有帮助。感谢@Oleg 对此的初步帮助。