2012-03-08 79 views
1

我有一個奇怪的。在將數據存儲從會話更改爲oracle後,當我點擊'inlineNav'上的Edit時,它總是通過「add」操作進入服務器。任何想法,爲什麼這可能發生?Jqgrid在編輯操作中發送「添加」爲oper =「添加」爲什麼?

$("#assessmentproduct").jqGrid({ 
      url: 'orthofixServices.asmx/GetProductList', 
      colNames: ['id', 'Product Description', 'Commission Rate'], 
      colModel: [ 
      { name: 'id' }, 
      { name: 'description', index: 'desc', width: 170, editable: true }, 
      { name: 'commissionrate', index: 'com', width: 80, editable: true, unformat: percentUnFormatter, formatter: percentFormatter, editrules: { number: true} } 
      ], 
      serializeRowData: function(data) { 

       var params = new Object(); 
       params.id = 0; 
       params.prdid = parseInt($("#prdid").val()); 
       params.description = data.description; 
       params.commissionrate = data.commissionrate; 
       return JSON.stringify({ 'passformvalue': params, 'oper': data.oper, 'id': data.id }); 
      }, 
      mtype: "POST", 
      rowNum: 4, 
      height: 93, 
      width: 400, 
      pager: '#assessmentpager', 
      editurl: "orthofixServices.asmx/ModifyProductList" 
     }); 
     $("#assessmentproduct").jqGrid('navGrid', '#assessmentpager', { add: false, edit: false, del: true, refresh: false, search: false }, {}, {}, { serializeDelData: function(postData) { 
      return JSON.stringify({ 'passformvalue': null, 'oper': postData.oper, 'id': postData.id }); 
     } 
     }); 
     $("#assessmentproduct").jqGrid('inlineNav', '#assessmentpager', { addParams: { position: "last", addRowParams: { 
      "aftersavefunc": function() { var grid = $("#assessmentproduct"); reloadgrid(grid); } 
     } 
     }, editParams: { "aftersavefunc": function() { var grid = $("#assessmentproduct"); reloadgrid(grid); } } 
     }); 
+0

默認發佈'inlineNav'數據爲'myCoumnName = maData&oper = add&id = new_row'。所以這些操作的價值將不會被引用。如果你有另一個結果,你應該包含顯示你如何定義jqGrid的JavaScript代碼。 – Oleg 2012-03-08 17:24:12

+0

在serializeRowData上調試javascript時:function(data){... data.oper =「add」。即使當我處於編輯模式。所以它不是序列化,它是網格表示它在這一點上的狀態!.. – 2012-03-08 18:48:09

回答

1

您使用JSON.stringifyserializeRowData內到發佈的數據序列化到JSON。這是你描述的編碼原因。

已更新:好的!現在我看到最後的問題是什麼。誤解的原因是因爲您在標題中使用oper="add"而不是oper=add。我明白你這個是你的問題(發送引用oper="add"而不是oper=add)。好。在edit操作的情況下發送oper=add的問題是已知的jqGrid bug,它已經在github上的代碼中已經修復(請參閱here)。您可以在jquery.jqGrid.src.js中進行相同的更改並使用固定代碼,直到jqGrid的新版本發佈。

+0

不,它不是序列化..當我調試serializeRowData時:function(data){...在這一點上data.oper =「add」,這是不正確的。因爲我通過按網格上的編輯來到這裏。因此,儘管我開始編輯操作時,它序列化它給我data.oper =「添加」,這不應該是網格的實際狀態 – 2012-03-08 18:51:06

+0

@ManuelValle:你應該替換代碼'返回JSON.stringify({'passformvalue': data.oper,'id':data.id});'兩行'var result = JSON.stringify({'passformvalue':params,'oper':data.oper,'id' :data.id});'和'return result;'。你會看到結果如何。 – Oleg 2012-03-08 19:30:13

+0

好吧,我添加了第二行來獲得結果,它是這樣得到的:{「passformvalue」:{「id」:0,「prdid」:2,「description」:「DESC 3/8/2012 2:56: 49 PM「,」commissionrate「:」5「},」oper「:」add「,」id「:」63「}但是我再次發出編輯操作,正如你看到的」oper「:」add「。 – 2012-03-08 19:58:47

相關問題