JqGrid文档说明了关于postData的以下内容:
用于向发布到服务器的数据添加内容的数组
就是这样。所以,我使用postData将变量发送到我的PHP,以便我可以使用switch case来调用我想要的函数。
这允许我有一个包含项目所有功能的PHP页面。我想用editData
做同样的事情所以我不需要为与项目相关的每个内联编辑功能都有一个PHP页面。
但是,editData
似乎没有传递给PHP页面。我尝试将POSTed变量打印到文件中,它们是空的。建议?
注意:我知道editData
错误,但这应该由我正在使用的版本4.4.4修复
$("#list").jqGrid({
url:'functions.php',
datatype:'xml',
mtype:'POST',
postData: {
action:'popGrid',
sqlCount:sqlCount,
sqlSelect:sqlSelect,
sqlSelect2:sqlSelect2,
label1:label1,
label2:label2,
},
colNames:['Label','Account_Num','Amount', 'Type Code', 'Record Code', 'Sequence'],
colModel :[
{name:'label', index:'label', width:150, align:'center', sortable:false, editable:true},
{name:'cntrct_id', index:'cntrct_id', width:150, align:'center', sortable:true},
{name:'amount', index:'amount', width:150, align:'center', sortable:false, editable:true},
{name:'type_cd', index:'type_cd', width:150, align:'center', sortable:false, editable:true},
{name:'rec_cd', index:'rec_cd', width:150, align:'center', sortable:false},
{name:'db_seq', index:'db_seq', width:150, align:'center', sortable:false},
],
editurl: 'functions.php',
extraparam: { action: function(){ return 'grdAdjust'; } },
onSelectRow: function(id) {
if(id && id!==lastSel) {
jQuery('#list').restoreRow(lastSel);
jQuery('#list').editRow(id,true);
lastSel=id;
}
},
pager: '#pager',
rowNum:100,
rowList:[100,200,300,400,500,600,700,800,900,1000],
sortname: 'cntrct_id',
sortorder: 'desc',
viewrecords: true,
caption: 'Adjustments'
});
答案 0 :(得分:1)
选项editData
在{* 3}}中扮演与主网格中postData
相同的角色。另一方面,您在问题的文本中写了“内联编辑”。如果您应该使用extraparam
选项(请参阅form editing)。如果您需要内联编辑的常用选项,那么$.jgrid.inlineEdit
中的使用权限defalut设置可能对您有所帮助。您没有发布任何代码,我不确定您使用哪种编辑模式以及使用哪种方式,因此我无法提供更多使用示例editData
,extraparam
等。
更新:您现在以错误的方式使用extraparam
。 extraparam
不是 jqGrid选项,它是editRow
的选项。正确使用可能是以下几点:
onSelectRow: function (id) {
if (id && id !== lastSel){
$(this).jqGrid("restoreRow", lastSel);
$(this).jqGrid("editRow", id, {
keys: true,
extraparam: {
action: function () {
return 'grdAdjust';
}
}
});
lastSel = id;
}
}
如果您需要发布action
的常量值,则可以使用extraparam
的简化形式:例如extraparam: {action: 'grdAdjust'}
。如果你需要从页面中返回一些变量或某个元素的值,那么函数的使用是非常有用的,这些元素将在editRow
的不同调用之间进行更改。
此外,我建议您添加jqGrid的gridview: true
选项,并简化您使用的colModel
。如果index
与name
具有相同的值,则可以将其发出。 width
的默认值已经是150,因此您也不需要指定width:150
。如果您希望在所有列或最多列中使用align:'center'
,则可以通过在网格中包含align
选项来更改网格的默认值cmTemplate: {align:'center'}
。由于大多数列都有sortable: false
,因此您也可以在cmTemplate
中添加该设置。因此,您可以将colModel
缩减为以下内容:
colModel: [
{name: 'label', editable: true},
{name: 'cntrct_id', sortable: true},
{name: 'amount', editable: true},
{name: 'type_cd', editable: true},
{name: 'rec_cd'},
{name: 'db_seq'},
],
cmTemplate: {align: 'center', sortable: false},
此类更改不仅简化了代码的读取,还简化了维护。请参阅the documentation有关列模板的更多信息。