jqGrid使用inlineNav刷新不使用extraparams

时间:2016-07-15 03:24:45

标签: jqgrid free-jqgrid

在上一个post中遵循解决方案后,我发现如果存在extraparams,使用successfunc使用inlineNav添加/编辑后的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的不同组合,但没有运气。

2 个答案:

答案 0 :(得分:2)

您将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
            }
        });

答案 1 :(得分:0)

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

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对此的初步帮助。