在 jqGrid 中的 serializeRowData 之后触发哪个事件?

Which event is fired after serializeRowData in jqGrid?

我在一个页面上有两个 jqGrids。这个想法是在下拉值更新时显示确认对话框,当用户按下 enter 键保存记录时,两个 jqGrids 都会重新加载。

这是我的专栏模型:

{
    key: false, name: 'InterestedValue', index: 'InterestedValue', editable: true,
    sortable: false, formatter: 'select', width: '120px', search: false,
    edittype: 'select',
    editoptions: {
        value: InterestedStatusList,
        //afterSaveCell: function (rowid, cellname, value, iRow, iCol) {
        //    alert("after savecell" + rowid + " cellname= " + cellname);
        //    //$(this).trigger('reloadGrid');
        //},
        successfunc: function (response) {
            alert("success");
            //FLAG = true;
            $(this).trigger('reloadGrid')
            return true;
        }

    }
},

和事件,

serializeRowData: function (postdata) {
   var response = JSON.stringify(postdata);
   var s = '';
   $(postdata).each(function (index, data) {
       //s += '<option value="' + index + '">' + data + '</option>';
       $.each(data, function (k, v) {
           if(k=="InterestedValue")
            s += v;//'<option value="' + k + '">' + v + '</option>';
       });

   });
   //
   if (s == "2_1") {
       if (confirm('Are you sure you want to deactivate this record? ')) {
           // do things if OK
           return postdata;
       }
       else
           return false;
   }
   return postdata;
},

我能够在 serializeRowData 事件后获取使用数据调用的编辑操作方法。但是我不知道如何在更新完成 成功后触发网格的重新加载。所以请告诉我在 serializeRowData 之后触发了哪个事件。我也在列中尝试了 successfunc,但是一旦我单击该行并进入编辑模式,它就会被触发。

如果用户选择 "dangerous" 值,您可以考虑显示确认对话框,并且 值将发送到服务器之前。要实现这一点,您可以使用

{
    name: 'InterestedValue', ...
    edittype: 'select',
    editoptions: {
        value: InterestedStatusList,
        dataEvents: [
            {
                type: 'change',
                fn: function () {
                    var newValue = $(this).val();
                    if (newValue === "2_1" && !confirm('Are you sure you want to deactivate this record?')) {
                        $(this).val("2_0"); // set some another value
                    }
                }
            }
        ]
    }
}

或者您可以使用 beforeEditRow 内联编辑的回调,但是您应该在 哪里 指定它的确切位置取决于 您如何使用 内联编辑(直接调用 editRow,使用 inlineNav,使用 formatter: "actions" 或其他一些)和 jqGrid 版本(直到版本 4.7),free jqGrid (see readme and wiki) or Guriddo jqGrid JS 你用的。

感谢@Oleg 的详细信息。

我之前发布的 serializeRowData 方法能够在停用记录之前为用户提供 JavaScript 确认对话框。这是我在服务器上完成更新后设法重新加载 jqGrids 的方法。

我使用了 editRow

$(gridId).jqGrid("editRow", 'kkk', true, '', '', '', '', reload)

并且在reload方法中,我触发了jqGrids的重新加载

function reload(rowid, result) {
var s = '';
var o = false;
var postdata = JSON.stringify(result);
$(jQuery.parseJSON(postdata)).each(function (index, data) {
    $.each(data, function (k, v) {
        s += k + ":" + v + " --- ";
        if (k == "responseText")
        {
            if (v.indexOf("Deactivated") != -1)
                o = true;
        }
        s += k + ":" + v + " --- ";
    });

});

if (o ==true) {
    //reload both grids
    $("#grid1").trigger("reloadGrid");
    $("#grid2").trigger("reloadGrid");
}  }

希望对您有所帮助。