如何在使用内联编辑时在jqgrid中发布静态值

我想发一个静态值给服务器,像这样<input type="hidden" name="table_name" value="">这个值不是colmodel的一部分,我想要每当内联编辑发生时发布它,这是我的jqgrid的php文件,

          
var lastsel2 var mydata=; jQuery("#rowed5").jqGrid({ postData: {test_value:''}, serializeCellData: function( post_to_server ) { var postParams = jQuery("#rowed5").jqGrid('getGridParam','postData'); if(postParams.hasOwnProperty('test_value') ) { post_to_server['test_value'] = postParams.test_value; } return post_to_server; }, datatype: "local", shrinkToFit: false, data: mydata, height: 320, autowidth:true, colNames:['RowID','status','note','Variant ID'], colModel:[ {name:'id',index:'id', width:55, sorttype:"int",align:"center"}, {name:'status',index:'status', width:150,align:"left", editable: true, edittype:"select",editoptions:{value:"Exclude:Exclude"}}, {name:'note',index:'note', width:200, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"10"}}, {name:'v_id',index:'v_id', width:150,align:"left"}], /*onSelectRow: function(id){ if(id && id!==lastsel2){ jQuery('#rowed5').jqGrid('restoreRow',lastsel2); jQuery('#rowed5').jqGrid('editRow',id,true); lastsel2=id; } },*/ editurl: "functions.php", cellEdit : true, cellsubmit : 'remote', cellurl : 'functions.php', }); jQuery("#rowed5").jqGrid('filterToolbar', {stringResult: true, searchOnEnter: false, defaultSearch : "cn"});

我可以发布colmodel值,如:

 if($_POST['oper']=='edit') { $id = mysql_real_escape_string($_POST['id']); } 

但我想发布一个静态值,它不是colmodel的一部分。

错误 Uncaught TypeError: jQuery(...).jqGrid is not a function at HTMLTableElement.serializeCellData (cam.php:224) at HTMLTableElement.serializeFeedback (jquery.jqGrid.src.js:2278) at HTMLTableElement. (jquery.jqGrid.src.js:8478) at Function.each (jquery.min.js:2) at n.fn.init.each (jquery.min.js:2) at n.fn.init.saveCell (jquery.jqGrid.src.js:8403) at n.fn.init.$.fn.jqGrid (jquery.jqGrid.src.js:2643) at HTMLSelectElement. (jquery.jqGrid.src.js:8368) at HTMLSelectElement.dispatch (jquery.min.js:3) at HTMLSelectElement.r.handle (jquery.min.js:3)

使用postData jqGrid参数或serailizeRowData网格参数。 所有这些都在这里和这里描述

您可能想查看此stackoverflowpost

编辑:

在这种情况下,一种可能的解决方案是使用serializeRowData

 jQuery("#rowed5").jqGrid({ ... postData: {test_value:''}, serializeRowData : function( post_to_server ) { var postParams = jQuery("#rowed5").jqGrid('getGridParam','postData'); if(postParams.hasOwnProperty('test_value') ) { post_to_server['test_value'] = postParams.test_value; } return post_to_server; }, datatype: "local", ... }); 

为了使其正常工作,请确保您的变量$ table具有值。 如果这项工作是在postData对象而不是变量中设置静态值的简单测试。

 jQuery("#rowed5").jqGrid({ postData: {test_value:'mystaticvalue'}, ... }); 

你问题的主要原因在于我选择了cellEdit : true 以及 onSelectRow editRow内联编辑方法。 jqGrid支持三种主要的替代编辑模式:倾斜编辑,单元格编辑和表单编辑。 如果启用关于选项cellEdit: true单元格编辑,则永远不会调用onSelectRow回调 。 单元格编辑通常意味着单元格选择而不是行选择 。 因此,使用cellEdit: true防止通常调用onSelectRow回调。 新选项noCellSelection: true是在免费的jqGrid 4.15.0中引入的,它将很快发布。 它允许将行选择与单元格编辑相结合,但是即使在使用noCellSelection: truecellEdit: true情况下调用onSelectRoweditRow也不好,因为它将取消刚开始的单元格编辑。

我的简短建议如下:您应该决定要使用哪种编辑模式。 在使用单元格编辑( cellEdit: true )的情况下,您应该删除未使用的onSelectRowserializeRowData并添加serializeCellData或者在beforeSubmitCell以扩展发布到服务器的数据。 serializeCellData的代码可以是相同的,您可以将其用于serializeRowData 。 或者,在{test_value: postParams.test_value}的回调可以返回对象{test_value: postParams.test_value}{} 。 从beforeSubmitCell返回的对象将与单元格编辑的标准参数组合(扩展)(请参阅旧文档 )。