免费的 jqGrid,不要使用 inlineNav 在 addrow 上发送新索引

Free jqGrid, don't send new index on addrow with inlineNav

只是放入一个新的网格,一切似乎都运行良好,除了一件事。使用基本内联,它为我用 key: true 设置的列发送了一个新的不正确的键值。这是数据库中的一个自动递增列,所以我只是不想在添加时为该列发送任何数据,只需要编辑或删除。

它正在为新的键列发布一个参数:row_id => jqg3 并且弄乱了我的服务器脚本。所以因为添加新行会自动增加 row_id col,所以我不需要发送这个。

如何在保存新添加的行时阻止 jqGrid 发送这个 (row_id) 索引列值?

free-jqgrid 版本为 4.14.0

$('#accts').jqGrid({
    url:'/phpAJAX/Master/master_grid_v1.php',
    editurl:'/phpAJAX/Master/master_grid_v1.php',
    height: 'auto',
    shrinkToFit: false,
    width: 'auto',
    datatype: 'xml',
    mtype: 'POST',
    postData:{
        'arg1':'bol_acct'
    },
    colNames:[
        'row_id',
        'Customer',
        'Trucker',
        'Acct Num'
    ],
    colModel:[
        {name: 'row_id', hidden: true, key: true},
        {name:'Customer', align: "center", editable: true},
        {name: 'Trucker', align: "center"},
        {name: 'Acct_Num', align: "center"}
    ],
    sortname: 'Customer',
    sortorder: 'desc',
    viewrecords: true,
    gridview: true,
    caption: 'Bill of Lading Accounts',
    rowNum: 10000,
    pager:true
}).jqGrid('inlineNav', { 
    addParams: { 
        addRowParams: { extraparam: {'arg1':'bol_acct', 'oper':'add'} } 
    },
    editParams: {
        extraparam: {
            'arg1':'bol_acct', 'oper':'edit'
        }
    }
})

可以使用内联编辑的serializeSaveData回调来修改数据,内联编辑时会发送这些数据。您可以通过

添加 serializeSaveData 回调
inlineEditing: {
    keys: true,
    extraparam: { arg1: "bol_acct" },
    serializeSaveData: function (postData) {
        var newPostData = $.extend(true, {}, postData);
        if (newPostData.oper === "add") {
            delete newPostData.id; // delete id parameter
        }
        return newPostData;
    }
}