我想向服务器发布一个静态值,类似于这个<input type="hidden" name="table_name" value="<?php echo $table_name; ?>">
值不是colmodel的一部分,我想在内联编辑发生时发布它,这是我的带有jqgrid的php文件,
<head>
<script type="text/ecmascript" src="jq/jquery.min.js"></script>
<script type="text/ecmascript" src="jq/jquery.jqGrid.min.js"></script>
<script type="text/ecmascript" src="jq/grid.locale-en.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="jq/jquery-ui.css"/>
<link rel="stylesheet" type="text/css" media="screen" href="jq/ui.jqgrid.css"/>
<meta charset="utf-8" />
</head>
<body>
<table id="rowed5"></table>
<script type="text/javascript">
var lastsel2
var mydata=<?PHP echo $json_data;?>;
jQuery("#rowed5").jqGrid({
postData: {test_value:'<?PHP echo $table?>'},
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"});
</script>
</body>
我可以发布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.<anonymous> (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.<anonymous> (jquery.jqGrid.src.js:8368) at HTMLSelectElement.dispatch (jquery.min.js:3) at HTMLSelectElement.r.handle (jquery.min.js:3)
发布于 2017-08-08 13:35:53
使用postData jqGrid参数或serailizeRowData网格参数。所有这些都被描述为这里和这里。
您可能想看看这个堆叠溢流柱
编辑:
在这种情况下,一种可能的解决方案是使用serializeRowData
jQuery("#rowed5").jqGrid({
...
postData: {test_value:'<?PHP echo $table?>'},
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'},
...
});
发布于 2017-08-09 18:59:29
在我看来,造成问题的主要原因是cellEdit : true
、和以及内联编辑方法(如onSelectRow
中的editRow
)。jqGrid支持三种主要的替代编辑模式:倾斜编辑、单元格编辑和表单编辑。如果您对选项cellEdit: true
启用单元格编辑,那么回调将永远不会被称为。单元格编辑通常意味着单元格选择而不是行选择。因此,cellEdit: true
的使用通常会阻止onSelectRow
回调的调用。在免费的noCellSelection: true
4.15.0中引入了新的选项jqGrid,该选项将很快发布。它允许将行选择与单元格编辑结合起来,但即使在使用editRow
和noCellSelection: true
的情况下,在onSelectRow
中调用cellEdit: true
也不是很好,因为它将取消刚刚开始的单元格编辑。
我的简短建议如下:您应该决定使用哪一种编辑模式。在使用单元编辑(cellEdit: true
)的情况下,您应该删除未使用的onSelectRow
和serializeRowData
,并添加serializeCellData
或替代beforeSubmitCell
来扩展提交到服务器的数据。serializeCellData
的代码可以是相同的,用于serializeRowData
。或者,回调beforeSubmitCell
可以返回对象{test_value: postParams.test_value}
或{}
。从beforeSubmitCell
返回的对象将与单元格编辑的标准参数(参见旧文件)结合(扩展)。
https://stackoverflow.com/questions/45569616
复制相似问题