Ole*_*leg 21
这是一个很好的问题!来自我的+1.
没有直接的方法可以检测dataInit是否从"添加"或"编辑"表单调用它.同样,如果您使用多种编辑模式(如表单编辑和内联编辑)和多种搜索模式(高级搜索对话框和搜索工具栏),则无法直接检测控件的使用位置.
作为解决方法,您可以使用以下内容.您可以定义,你可以在不同的值设置这将增加和编辑两个表格被称为事件的内部变量之前的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;
}
});
Run Code Online (Sandbox Code Playgroud)
我还使用了recreateForm:true属性来确保在Add或Edit网格的每个开口处创建new和dataInit被调用的表单.
在演示中,添加表单看起来像

这里的dataInit"注释"只在相应的控件中写入"添加"文本."Inv.No"是保存id的字段.<input>添加/编辑表单的相应控件被禁用.因此用户无法进行任何更改.在"添加"对话框的情况下,该方法$.jgrid.randId()将用于生成新的唯一ID值.
相应的编辑表单如下图所示:
