在 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");
} }
希望对您有所帮助。
我在一个页面上有两个 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");
} }
希望对您有所帮助。