【问题标题】:jqGrid onPaging stop loading new Page if a row is in edit如果一行正在编辑,jqGrid onPaging 停止加载新页面
【发布时间】:2013-03-08 12:12:19
【问题描述】:

我有一个带有寻呼机的网格。我需要阻止寻呼机加载另一个页面,而当前页面上的一行正在进行内联编辑。所以当我创建网格时,我定义了 onPaging 函数

....
onPaging : function(){
        if (inEdit()>0){
            alert("Finish editing the current line");
            return 'stop';
        }
    }
....

inEdit 函数只计算有多少行有 attr 可编辑。

这可以完成这项工作,但是稍后当我在分页停止时正在编辑的行上调用 restoreRow 函数时,该函数无法将该行恢复到以前的状态。

稍后编辑:

稍后调用此函数取消编辑时会出现问题

function cancelEdit(id){
    /*this line does nothing at all --> */ $('#list').jqGrid('restoreRow',id);
    //The only way restore worked is by calling a grid reload but that is not really a solution
    $('#list').trigger("reloadGrid", [{page:$('#list')[0].p.page}]);
    $('#'+id+' [name=editButton]').show();
    $('#'+id+' [name=submitButton]').hide();
    $('#'+id+' [name=cancelButton]').hide();
}

PS:编辑/保存/取消/删除是自定义按钮

【问题讨论】:

  • 您是从服务器向您的网格提供数据吗?其他人正在编辑您的网格中显示的数据的用例吗?
  • 目前,数据是在本地加载的,问题不在于其他人编辑数据,而是在网格中您必须一次只能编辑1行并且只能停止通过保存或取消(确认)网格的所有其他功能进行编辑,这可能会中断编辑,例如分页必须停止,直到编辑完成。
  • 你解决了吗?

标签: jqgrid


【解决方案1】:

我认为,如果您查看正在做的事情,但请查看 Oleg 的帖子,网址为 jqGrid - Inline edit - Detect dirty / changed cells 并使用该标志来防止分页,您将能够完成您正在尝试做的事情。

【讨论】:

  • 我就是这么做的,inEdit 方法返回 $('tr[editable=1]') 的数量。我的问题不是停止它停止的分页,而是后来当我调用 restoreRow 时它不起作用。我将添加代码,以便您了解我在做什么
  • 用户选择...当取消按钮被按下时,该方法被调用。有一些东西使 restoreRow 方法停止工作,例如:按编辑按钮 -> 开始内联编辑 -> 按下一页按钮 -> onPaging 函数停止加载下一页并发出警报 -> 按取消按钮 -> 调用试图恢复行的 cancelEdit 方法......但是,如果你在编辑取消按钮时不按分页按钮,那将不再有效
  • 如果我理解这一点,如果他们在编辑时点击分页按钮,他们会收到一个警告确认窗口,如果他们选择继续,你想放弃他们的编辑和更改页面吗?
  • 实际上,如果他们点击分页按钮,他们会收到一个警报,告诉他们在移动到另一个页面之前完成编辑,但稍后如果他们点击取消按钮(调用上面写的方法的按钮)restoreRow 行什么都不做不抛出异常就像它不存在一样
  • 所以即使在点击取消按钮后,if (inEdit()>0){ 仍然显示它们是正在编辑的行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多