我想向服务器发布一个静态值,例如Custom data source Id for the uploads to be deleted. (string)
该值不是colmodel的一部分,我想在内联编辑发生时发布它,这是我的jqgrid的php文件,
<input type="hidden" name="table_name" value="<?php echo $table_name; ?>">
我可以发布colmodel值,如:
<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']);
}
答案 0 :(得分:1)
使用postData jqGrid参数或serailizeRowData网格参数。所有这些都描述为here和here
您可能需要查看此stackoverflow post
编辑:
在这种情况下,一种可能的解决方案是使用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'},
...
});
答案 1 :(得分:1)
问题的主要原因在于我cellEdit : true
选项与editRow
内的onSelectRow
内联编辑方法相似。 jqGrid支持三种主要的替代编辑模式:倾斜编辑,单元格编辑和表单编辑。如果您根据选项cellEdit: true
启用单元格编辑,则将永远不会调用回调onSelectRow
。单元格编辑通常意味着单元格选择,而不是行选择。因此cellEdit: true
的使用阻止了通常调用onSelectRow
回调。免费的jqGrid 4.15.0中引入了新选项noCellSelection: true
,该选项即将发布。它允许将行选择与单元格编辑相结合,但即使在editRow
onSelectRow
的情况下调用cellEdit: true
内的noCellSelection: true
也不好,因为它将取消刚开始细胞编辑。
我的简短推荐如下:您应该决定要使用哪种一个编辑模式。在使用单元格编辑(cellEdit: true
)的情况下,您应删除未使用的onSelectRow
和serializeRowData
,并添加serializeCellData
或beforeSubmitCell
以扩展发布到服务器。 serializeCellData
的代码可以与serializeRowData
使用的代码相同。或者,回调beforeSubmitCell
可以返回对象{test_value: postParams.test_value}
或{}
。从beforeSubmitCell
返回的对象将与单元格编辑的标准参数组合(扩展)(请参阅the old documentation)。