【发布时间】:2011-08-07 16:02:04
【问题描述】:
如何在 dataInit 事件中区分我是添加新数据还是编辑它?
提前致谢。
【问题讨论】:
标签: javascript jqgrid
如何在 dataInit 事件中区分我是添加新数据还是编辑它?
提前致谢。
【问题讨论】:
标签: javascript jqgrid
这是个好问题!为此我 +1。
没有直接的方法来检测dataInit 内部是否是从添加或编辑表单调用的。同样,如果您使用多种编辑模式(如form editing 和inline editing)和多种搜索模式(advance searching 对话框和the searching toolbar),则无法直接检测控件的使用位置。
作为解决方法,您可以使用以下方法。您可以定义一个变量,您可以在事件内部的不同值中设置该变量,该事件将在添加和编辑表单 before 中调用,dataInit 将被调用。告诉信任你没有那么大的选择。这只是beforeInitData 事件。所以你可以这样做
var myGrid = $("#list"),
inEdit;
$("#list").jqGrid({
// all parameters of the jqGrid definition
});
myGrid.jqGrid('navGrid', '#pager',
{ del: false, search: false },
{ // Edit
recreateForm: true,
beforeInitData: function () {
inEdit = true;
}
},
{ // Add
recreateForm: true,
beforeInitData: function () {
inEdit = false;
}
});
我还使用了recreateForm:true 属性来确保每次打开添加或编辑网格时都会创建新的表单并调用dataInit。
在the demo 中,添加表单看起来像
这里的“Notes”dataInit 在相应控件中只写“in Add”文本。 “Inv. No”是保存 id 的字段。添加/编辑表单的相应<input> 控件被禁用。因此用户无法进行任何更改。在“添加”对话框的情况下,$.jgrid.randId() 方法将用于生成新的唯一 ID 值。
对应的编辑表格如下图所示:
【讨论】: