如何在dataInit事件中区分我是添加新数据还是编辑它?
提前致谢。
答案 0 :(得分:21)
这是一个很好的问题!来自我的+1。
没有直接的方法来检测dataInit
内部是否从“添加”或“编辑”表单调用它。以同样的方式,如果您使用多种编辑模式(如form editing和inline editing)和多种搜索模式(advance searching对话框和the searching toolbar),则无法直接检测到使用控件的位置。
作为解决方法,您可以使用以下内容。您可以定义一个变量,您可以在事件内部的不同值中设置该变量,该变量将在>强调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中,添加表单看起来像
这里“注释”的dataInit
只在相应的控件中写入“添加”文本。 “Inv.No”是保存id的字段。 “添加/编辑”表单的相应<input>
控件已禁用。因此用户无法进行任何更改。如果是“添加”对话框,方法$.jgrid.randId()
将用于生成新的唯一ID值。
相应的编辑表格如下图所示: