2016-07-15 79 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爲此提供了最初的幫助。