首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用内联编辑时在jqgrid中发布静态值

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

Stack Overflow用户
提问于 2017-08-08 13:24:50
回答 2查看 697关注 0票数 1

我想向服务器发布一个静态值,类似于这个<input type="hidden" name="table_name" value="<?php echo $table_name; ?>">值不是colmodel的一部分,我想在内联编辑发生时发布它,这是我的带有jqgrid的php文件,

代码语言:javascript
运行
复制
<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值如下:

代码语言:javascript
运行
复制
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)

EN

回答 2

Stack Overflow用户

发布于 2017-08-08 13:35:53

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

您可能想看看这个堆叠溢流柱

编辑:

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

代码语言:javascript
运行
复制
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对象中设置一个静态值,而不是变量。

代码语言:javascript
运行
复制
jQuery("#rowed5").jqGrid({
    postData: {test_value:'mystaticvalue'},
...
});
票数 1
EN

Stack Overflow用户

发布于 2017-08-09 18:59:29

在我看来,造成问题的主要原因是cellEdit : true以及内联编辑方法(如onSelectRow中的editRow )。jqGrid支持三种主要的替代编辑模式:倾斜编辑、单元格编辑和表单编辑。如果您对选项cellEdit: true启用单元格编辑,那么回调将永远不会被称为。单元格编辑通常意味着单元格选择而不是行选择。因此,cellEdit: true的使用通常会阻止onSelectRow回调的调用。在免费的noCellSelection: true 4.15.0中引入了新的选项jqGrid,该选项将很快发布。它允许将行选择与单元格编辑结合起来,但即使在使用editRownoCellSelection: true的情况下,在onSelectRow中调用cellEdit: true也不是很好,因为它将取消刚刚开始的单元格编辑。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45569616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档