Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqGrid内联编辑:防止用户单击正在编辑的行的外部(防止取消编辑/添加行)_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript jqGrid内联编辑:防止用户单击正在编辑的行的外部(防止取消编辑/添加行)

Javascript jqGrid内联编辑:防止用户单击正在编辑的行的外部(防止取消编辑/添加行),javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,下午好 今天的下半部分我一直在讨论这个问题: 我有一个启用了内联添加/编辑的jqGrid。一切都很好,但是,我正在努力防止正在编辑/添加的行在用户单击另一行时被自动取消。我已尝试在“beforeSelectRow”中返回false,“beforeSelectRow”中的“resetSelection”。设置“beforeSelectRow”中正在编辑的行的选择,将所有不可编辑的行设置为禁用;都没有用。此外,用户(此时的我)单击另一行时,似乎不会触发“gridID\u licancel”按钮;通过

下午好

今天的下半部分我一直在讨论这个问题:

我有一个启用了内联添加/编辑的jqGrid。一切都很好,但是,我正在努力防止正在编辑/添加的行在用户单击另一行时被自动取消。我已尝试在“beforeSelectRow”中返回false,“beforeSelectRow”中的“resetSelection”。设置“beforeSelectRow”中正在编辑的行的选择,将所有不可编辑的行设置为禁用;都没有用。此外,用户(此时的我)单击另一行时,似乎不会触发“gridID\u licancel”按钮;通过其他方法直接取消编辑/添加“会话”

我希望能够从源头上钩住这种行为,因为添加/编辑会话的取消是在“beforeSelectRow”事件触发之前发生的,而不是通过“gridID\u licancel”单击事件的触发器发生的

当然,当一行被编辑或添加时,用户不应该像疯子一样在所有其他行上点击,或者什么都不点击,但是,我预见到关于这个功能的反馈。在这些行中没有太多的净空,用户可能会错过“保存”按钮(当行变为可编辑时内联生成)并单击另一行,然后重新开始,这可能是一个相当常见的情况。仅仅把排得更高并不是合法的解决办法

需要注意的另一点是,这种行为仅在单击网格上的另一行时发生。我使用的是一个模态对话框,里面有一个选项卡式div,每个选项卡都有自己的形式。这个特定网格中的一行可以坐在那里等待编辑,用户可以转到另一个选项卡,提交数据,然后返回,而该行仍然在等待编辑;它不是自动取消本身。此外,在这个网格上,我已经硬设置了网格的高度,因此如果用户在网格中没有行的空白区域单击,则编辑/添加会话不会取消。因此,这只会在单击另一行时发生


因此,当用户编辑一行时,如何在取消添加/编辑会话之前捕获另一行的选择???感谢您的帮助。

我实际上能够找到允许这种行为的必要(但文档中缺少)代码:

“restoreAfterSelect”InlineAV属性需要设置为false,以允许在“OnSetrow”、“beforeSelectRow”、“ondblClickRow”或“onRightClickRow”中进行任何类型的操作

当用户在编辑另一行时双击另一行时(例如,您确定要结束当前会话等),我能够调用一个功能完整的确认对话框,但在处理上下文菜单时,我无法获得相同的成功。我试着只在右键单击时绑定上下文菜单,而不是在load complete(加载完成)时绑定,但是菜单只会在每三次左右的单击时出现。其他的尝试都失败了,但我忘记了它们是什么,因为它们都是徒劳的

不过,我所能做的只是在用户编辑时完全解除上下文菜单事件/功能的绑定。如果用户试图双击另一行,或打开上下文菜单,将显示一条消息,告诉他们完成编辑,或者如果要编辑/添加/删除其他行,则取消。我还设置了cancel按钮,每当单击时刷新网格,以便将上下文菜单重新绑定到每一行

代码片段,如果有人发现它有用的话(主要问题是不知道,遇到了'restoreAfterSelect'):

并且,在#tablename_liadd和#tablename_liedit按钮的单击事件中:

$('#tableTask_iladd, #tableTask_iledit').bind('click', function () {
        //if the context menu is visible then hide it. (for sitch where user brings up context menu, but then goes and clicks on the add/edit button.
        $('#jqContextMenu').hide();
        //while in edit/add mode, user should not be able to bring up the context menu until they end their current session. this context menu is re-bound once the user clicks the cancel button(refreshes the grid) or they save the data they are inputting (will result in a refresh once the transaction is completed).
        $("#tableTask tr.jqgrow").unbind('contextmenu');
$('#tableTask_iladd, #tableTask_iledit').bind('click', function () {
        //if the context menu is visible then hide it. (for sitch where user brings up context menu, but then goes and clicks on the add/edit button.
        $('#jqContextMenu').hide();
        //while in edit/add mode, user should not be able to bring up the context menu until they end their current session. this context menu is re-bound once the user clicks the cancel button(refreshes the grid) or they save the data they are inputting (will result in a refresh once the transaction is completed).
        $("#tableTask tr.jqgrow").unbind('contextmenu');