如何在jqGrid中将自定义参数传递给ajax请求进行在线编辑
问题描述:
这是我的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,就像你在处理程序中看到的那样。这也不起作用。这里出了什么问题?请帮我这个
答
方法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()
可以有另一个值。
即使这没有奏效。我完全困惑。如何没有解决方案工作? – Shades88 2012-04-10 05:33:47
@ Shades88:从[答案]看[演示](http://www.ok-soft-gmbh.com/jqGrid/SendDataFromInlineNav1.htm)。点击“添加”按钮并尝试保存。你会看到'exraparam'的函数被调用。从[答案](http://*.com/a/8512693/315935)看[另一个演示](http://www.ok-soft-gmbh.com/jqGrid/inlineDataAsFunction.htm)。它也可以工作。毕竟您可以将演示与您的代码进行比较。 – Oleg 2012-04-10 06:41:19
好的,请检查更新的代码。我通过看你的演示做了改变,但仍然没有工作 – Shades88 2012-04-10 07:11:38