2012-04-09 26 views
2

這是我的jqGrid處理程序。如何在jqGrid中將自定義參數傳遞給ajax請求進行在線編輯

var myEditParams = { 
    keys: true, 
    extraparam: { 
     ajax: function() { 
      alert("in myEditParams:extraparam"); 
      return "1"; 
     } 
    } 
}; 
var lastsel; 
jQuery("#list2").jqGrid({ 
     data: data, 
     height: 250, 
     emptyDataText: "No Records Found", 
     width: $('#mainwrapper').width(), 
     datatype: "local",   
     colNames:['Table Description','Display Table name'], 
     colModel:[ 
      { name:'table_desc', index:'table_desc', sortable: false, align: 'left', editable: true, edittype: 'text', editoptions:{ size:40 }, formatoptions:{ 
       keys: true, 
       editOptions: myEditParams 
      } }, 
      { name:'display_table_name',index:'display_table_name', sortable: false } 
     ], 
     loadComplete: function(){ 
      $('.ui-jqgrid-htable').css('width',$('#mainwrapper').width()+'px'); 
      if ($('#list2').getGridParam('records') == 0){ // are there any records? 
       DisplayEmptyText(true); 
      }else{ 
       DisplayEmptyText(false); 
      }      
     }, 
     rowNum:10, 
     rowList:[10,20,30], 
     pager: '#pager2', 
     sortname: 'id', 
     viewrecords: true, 
     sortorder: "desc", 
     caption:"Changelog Tables", 
     postData: { ajax: "1" }, 
     onSelectRow: function(id){ 
      if(id && id!==lastsel){ 
       jQuery('#list2').jqGrid('restoreRow',lastsel); 
       jQuery('#list2').jqGrid('editRow',id,true); 
       $('#list2').jqGrid('setGridParam',id,{ ajax:"1" }); //wanted to set some custom params here. 
       lastsel=id; 
      } 
     }, 
     editurl: "changeLog.php" 
    }); 

我想發送一個額外的參數爲ajax = 1,當我做一些就地編輯操作。我曾嘗試過各種方法。但似乎沒有任何工作。我幾乎感到沮喪。

我嘗試這樣做:

$("#list2").jqGrid('setGridParam',{postData:{ajax:'1'}}); 

沒有工作。我也試過設置postData param,就像你在處理程序中看到的那樣。這也不起作用。這裏出了什麼問題?請幫我這個

回答

3

方法editRow支持extraparam。所以,你可以重寫onSelectRow這樣:

onSelectRow: function (id) { 
    var $myGrid = $(this); // it's better as jQuery('#list2') 
    if (id && id !== lastsel) { 
     $myGrid.jqGrid('restoreRow', lastsel); 
     $myGrid.jqGrid('editRow', id, { 
      keys: true, 
      extraparam: { ajax: "1" } 
     }); 
     lastsel = id; 
    } 
} 

通過可以使用在extraparam方法(函數),而不是屬性的方式。在下面的情況下它可能是helfull。在調用editRow函數時,將計算如extraparam: { ajax: $("#myControl").val() }這樣的值。如果您將使用extraparam: { ajax: function() { return $("#myControl").val(); } }那麼ajax參數的值將在時刻評估,該值爲。目前$("#myControl").val()可以有另一個值。

+0

即使這沒有奏效。我完全困惑。如何沒有解決方案工作? – Shades88 2012-04-10 05:33:47

+0

@ Shades88:從[答案]看[演示](http://www.ok-soft-gmbh.com/jqGrid/SendDataFromInlineNav1.htm)。點擊「添加」按鈕並嘗試保存。你會看到'exraparam'的函數被調用。從[答案](http://stackoverflow.com/a/8512693/315935)看[另一個演示](http://www.ok-soft-gmbh.com/jqGrid/inlineDataAsFunction.htm)。它也可以工作。畢竟您可以將演示與您的代碼進行比較。 – Oleg 2012-04-10 06:41:19

+0

好的,請檢查更新的代碼。我通過看你的演示做了改變,但仍然沒有工作 – Shades88 2012-04-10 07:11:38

相關問題