jqgrid在dataInit中区分添加和编辑表单

dio*_*ney 15 javascript jqgrid

我如何区分dataInit事件我是否添加新数据或进行编辑?

提前致谢.

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值.

相应的编辑表单如下图所示:

在此输入图像描述