2012-04-09 24 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

相关问题