2011-03-09 19 views
4

我在MVC項目上使用JQGrid插件。我試圖避免使用'會話'。我已經能夠使用JQGrid的serializedata方法將額外postdata傳入我的編輯和刪除函數。如何將其他postdata傳遞到添加記錄函數 - JQGrid - MVC。 NET

E.G.

serializeEditData: function (postdata) 
{ 
    var rowdata = jQuery('#gridId').getRowData(postdata.id); 
    return {id: postdata.id, oper: postdata.oper, SomeExtraData: $('#extradata').val()}; 
} 

但是,似乎沒有serializeAddData函數。有沒有另外一種方法來改變添加方法發佈前的發佈數據?

+0

是否有理由聲明'var rowdata'然後返回函數而不使用變量? – Chev 2011-03-09 18:37:50

回答

9

一個方法editGridRow其實現形式編輯爲「編輯」和「添加」對話框。所以在兩種情況下都可以使用相同的事件處理程序serializeEditData。例如,

$("#list").jqGrid('navGrid','#pager', 
    {/*navGrid options*/}, 
    {/*edit options*/ 
     serializeEditData: function (postdata) { 
      // your implementation of serializeEditData for edit 
     } 
    }, 
    {/*add options*/ 
     serializeEditData: function (postdata) { 
      // your implementation of serializeEditData for add 
     } 
    }, 
    {/*del options*/}, 
    {/*search options*/} 

/);

通常serializeEditData事件是非常實用的,如果您需要轉換全部以另一種格式發佈數據,例如使JSON序列化。爲了能夠通過額外的POSTDATA參數,你可以使用editData參數,而不是其含義一樣postData參數的jqGrid的相同:以這種方式

$("#list").jqGrid('navGrid','#pager', 
    {/*navGrid options*/}, 
    {/*edit options*/ 
    editData: {SomeExtraData: $('#extradata').val()} 
    }, 
    {/*add options*/ 
    editData: {SomeExtraData: $('#extradata').val()} 
    }, 
    {/*del options*/}, 
    {/*search options*/} 
); 

或更好的(見this answer關於函數的用法爲postData財產):

$("#list").jqGrid('navGrid','#pager', 
    {/*navGrid options*/}, 
    {/*edit options*/ 
    editData: {SomeExtraData: function() {return $('#extradata').val();}} 
    }, 
    {/*add options*/ 
    editData: {SomeExtraData: function() {return $('#extradata').val();}} 
    }, 
    {/*del options*/}, 
    {/*search options*/} 
); 
+0

謝謝!這正是我需要的。 – Joe 2011-03-10 08:55:29

+0

完美答案謝謝...... – Rajpurohit 2014-01-21 12:20:20

+1

@Rajpurohit:不客氣!另外一個更好的方法是使用'onclickSubmit'回調。它可以像'editData'一樣返回擴展數據的對象。請參閱[答案](http://stackoverflow.com/a/16135162/315935)。這種方式的主要優點是附加選項:'選項,postData,oper' – Oleg 2014-01-21 12:43:31