0

JqG​​rid 文档说明了有关 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'
});
4

1 回答 1

1

该选项editData表单编辑中的作用与postData在主网格中的作用相同。另一方面,您在问题文本中写了有关“内联编辑”的内容。在这种情况下,您应该改用extraparam选项(请参阅文档)。如果您需要常用的内联编辑选项,那么使用默认设置$.jgrid.inlineEdit可能对您有所帮助。您没有发布任何代码,我不确定您使用哪种编辑模式和方式,因此我无法提供更多使用示例editDataextraparam

更新:您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:like extraparam: {action: 'grdAdjust'}。如果您需要从页面返回某个变量或某个元素的值,这些值将在不同的editRow.

此外,我建议您包括gridview: truejqGrid 选项并简化colModel您使用的选项。如果具有与您可以发出index的相同的值。name的默认值width已经是 150,所以你也不需要指定width:150。如果您想在所有或大多数列中使用,您可以通过在网格中包含选项align:'center'来更改网格的默认值。因为大多数列都有您也可以在其中包含设置。结果,您可以减少到以下内容:aligncmTemplate: {align:'center'}sortable: falsecmTemplatecolModel

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},

这样的改变不仅简化了代码的阅读,也简化了维护。有关列模板的更多信息,请参见此处。

于 2013-02-12T14:53:03.387 回答