jqGrid比较前后单元格或行编辑值

时间:2016-01-15 23:51:05

标签: jquery jqgrid

我需要在编辑之前检索行内容或单元格内容,以便我可以将其传递给帖子数据。基本上我需要比较前后编辑值并将它们发送到数据库。这是我的代码,但beforeEdit Cell没有触发。

Grid.jqGrid({
    url         : URL,
    editurl     : UpdURL,
    mtype       : "POST",
    postData    : {'action':'wk','ID':ID},
    datatype    : "JSON",
    page        : 1,
    regional    : lang,
    beforeEditCell : getCellCurrentValue,
    idPrefix    : "w_",
    colNames    : WkColName[lang],
    colModel    : [
                    { name: 'ID', width: 25, hidden: true },
                    { name: 'c_ID', key:true, editable: true, width: 20, editrules : { required: true, integer:true, minValue:1} },
                  ],
    autowidth   : true,
    height      : 445,
    rowNum      : 20,
    caption     : GridCaption,
    shrinkToFit : true,
    sortorder   : "asc",
    hidegrid    : false,
    gridview    : true,
    pgbuttons   : false,
    pgtext      : null,
    viewrecords : false,
    pager       : GridPager,
})
.inlineNav(GridPager,{edit: true, add: true, del: false, cancel: true, refresh : false,
                                editParams: {keys: true,extraparam: {'action':'wk', 'ID': ID, 'oldwk' : oldwkValue}},
                                addParams: {position: 'last',
                                                addRowParams:{
                                                keys:true,
                                                extraparam:{'action':'wk','ID':ID},
                                                            successfunc: function () {
                                                                var $self = $(this);
                                                                setTimeout(function () {
                                                                    $self.trigger("reloadGrid");
                                                                }, 50);
                                                            }
                                                }
                                            }
                            });
var lastWkselRowContent;
var oldWkValue;
function getCellCurrentValue(id) {
    if (id && id !== lastWkselRowContent) {
        oldWeekValue = Grid.jqGrid('getCell',id,'ID');
        lastWkselRowContent = id;
        return oldWkValue;
    }
}

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用beforeSaveRow动态更改extraparam并添加您需要的其他信息。您可以在editParamsaddRowParams中添加回调。 beforeSaveRow回调的前两个参数是optionsrowidoptions包含extraparam属性,您可以扩展更改的属性。您将在savedRow内找到的旧行,即jqGrid 的参数。我认为您可以在savedRow[0].ID下找到所需信息。

beforeSaveRow: function (options, rowid) {
    var p = $(this).jqGrid("getGridParam");
    // modify extraparam
    options.extraparam.oldwk = p.savedRow[0].ID;
    // to be exact one can search p.savedRow array
    // for the item which have p.savedRow[i].id === rowid,
    // but if only one row is editing at the same time then
    // the array p.savedRow have only one element and
    // p.savedRow[0] have the old values: c_ID and ID
    // and p.savedRow[0].id === rowid
}