2016-07-15 81 views
0

在以前的post中的解决方案之后,我发现如果extraparams存在,使用successfunc添加/编辑inlineNav后jqGrid刷新不起作用。jqGrid使用inlineNav刷新不能与extraparams

这里是我的代码:

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

你把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 
      } 
     }); 
+0

这是我的理解,我需要将任何添加参数添加到添加参数部分。我只需要添加这些额外的参数。 –

+0

@JerryP:是的,但是'addParams:{addRowParams:{editOptions,extraparam:{...}}}'您使用的是**错误**。 'addParams:{addRowParams:editOptions}'是正确的,'addParams:{addRowParams:{keys:true,extraparam:{...},successfunc:function(){...}}}'也是正确的。 addParams的值应该是**对象**,就像'addRow'函数的参数一样(参见[这里](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#addrow) )。该对象可以具有'addRowParams'属性。 'addRowParams'属性的值应该是** object **和'editRow'的选项。 – Oleg

+0

@JerryP:editRow的选项是在这里描述的(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow)。您使用的语法'{editOptions,extraparam:{...}}'已经错了。这里的editOptions是什么?正确的语法应该是'{property1Name:property1Value,property2Name:property2Value,...}'。 – Oleg

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为此提供了最初的帮助。