【问题标题】:jqgrid differentiate in dataInit add and edit formsjqgrid 在dataInit中区分添加和编辑表单
【发布时间】:2011-08-07 16:02:04
【问题描述】:

如何在 dataInit 事件中区分我是添加新数据还是编辑它?

提前致谢。

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    这是个好问题!为此我 +1。

    没有直接的方法来检测dataInit 内部是否是从添加或编辑表单调用的。同样,如果您使用多种编辑模式(如form editinginline 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 值。

    对应的编辑表格如下图所示:

    【讨论】:

    • 这就像一个魅力!谢谢,奥列格!我希望有足够的声誉来投票赞成你的答案:(
    • @diosney:不客气!如果您没有忘记,您可以稍后在获得 15 点声望后投票选出有用的旧答案。你的第一个问题很好,如果你继续,那么你很快就会有更多的声望点 15。我有足够的声望。最重要的是投票选出好的问题或答案,以便在搜索结果中排名更高。所以这个答案也可以帮助其他人。
    • @Tareq:不客气!我很高兴看到答案对您有所帮助。
    • @Oleg:你是什么?再次拯救了我的一天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多