【问题标题】:How to disable Save Handler on Jqgrid while doing editing编辑时如何在 Jqgrid 上禁用 Save Handler
【发布时间】:2013-12-26 13:53:41
【问题描述】:

我正在使用 Jqgrid 开发 ASP.net MVC 4.0 应用程序。

将所有行设为可编辑,其中一些列可编辑,一些列不可编辑。

这里的问题是,我不想使用 Save 和 ESC 处理程序。

我正在保存有关其中一个文本框的模糊事件的行详细信息。我仍然需要保持 EDIT 模式。

因此,如果用户误按了 enter ,该行将退出编辑模式。

如何禁用这些 EscSave 处理程序

请帮忙..

更新:

我没有使用单元格编辑、内联编辑或表单编辑

我在 Jqgrid 的 loadComplete 触发器上将所有行转换为可编辑

我只有一列可编辑。是 Textbox

类型的

所以,在它的模糊事件中,我正在使用 ajax 帖子将其保存到数据库中。

到目前为止,一切都很好。

这里,即使将值保存到数据库后,网格也需要处于编辑模式

但是,当在该行上单击 enter 时,它正在退出编辑模式,这违反了我的要求

当按下 ESC 或 Enter 键时,我需要停止将行从编辑模式移动到查看模式

我希望这很清楚..如果不是我会提到更多..

【问题讨论】:

  • 您的问题文本不清楚。你使用什么编辑模式?您的意思是哪个“保存处理程序”?你用什么代码?您是编辑本地数据还是将数据保存在服务器上?抱歉,我真的不知道你在做什么。
  • 抱歉解释不清楚..我会更新问题
  • @oleg..你能检查我编辑过的问题吗..
  • @Oleg..请在下面找到我的答案..并提出建议。
  • 与其使用gridComplete开启编辑,不如使用自定义格式化器将列渲染为带有onblur的文本输入,可以将rowid保存为输入的数据属性取回jqgrid onblur 中的行。顺便说一句,editparameters 上有一个键选项,它也可能让你想要你正在寻找。

标签: jqgrid edit


【解决方案1】:

我是这样解决的:

不知道这样做是否正确:

Oleg..我需要您对此的看法:

    if(cnt > 0) {
        svr.id = rowid; $t.p.savedRow.push(svr);
        $(ind).attr("editable","1");
        $("td:eq("+focus+") input",ind).focus();
        if(o.keys===true) {
            $(ind).bind("keydown",function(e) {
                if (e.keyCode === 27) {
//                  debugger
//                  $($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);
//                  if($t.p._inlinenav) {
//                     try {
//                        $($t).jqGrid('showAddEditButtons');
//                     } 
//                     catch (eer1) {}
//                  }
                    return false;
                }
                if (e.keyCode === 13) {
//                  var ta = e.target;
//                  if(ta.tagName === 'TEXTAREA') { return true; }
//                  if( $($t).jqGrid("saveRow", rowid, o ) ) {
//                      if($t.p._inlinenav) {
//                          try {
//                              $($t).jqGrid('showAddEditButtons');
//                          } catch (eer2) {}
//                      }
//                  }
                    return false;
                }
            });
        }
        $($t).triggerHandler("jqGridInlineEditRow", [rowid, o]);
        if( $.isFunction(o.oneditfunc)) { o.oneditfunc.call($t, rowid); }
    }

这是代码,我在 Jqgrid.src.js

中找到

因为,当按下 Enter 键或 ESC 时,我确实需要调用 restoreRow 和 saveRow,所以我注释掉了代码。

我不知道这样做是否正确。但是,这确实适用于我的场景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2014-11-08
    • 2011-03-10
    相关资源
    最近更新 更多