Javascript 事件viewGridRow的jQGrid中的top和left选项存在问题,无法分析光标位置
我的jQGrid有问题。我试图使它在viewGridRow事件触发时,将弹出窗口的位置设置为光标的位置。我在网格中有一个很长的列表,默认情况下会将窗口放在网格的顶部 atm i具有通过jQuery检索光标位置的功能:Javascript 事件viewGridRow的jQGrid中的top和left选项存在问题,无法分析光标位置,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我的jQGrid有问题。我试图使它在viewGridRow事件触发时,将弹出窗口的位置设置为光标的位置。我在网格中有一个很长的列表,默认情况下会将窗口放在网格的顶部 atm i具有通过jQuery检索光标位置的功能: var CursorX; var CursorY; $(document).bind('dblclick', function (e) { CursorX = e.pageX; }) $(document).bind('dblclick', function (e) { Curso
var CursorX;
var CursorY;
$(document).bind('dblclick', function (e) { CursorX = e.pageX; })
$(document).bind('dblclick', function (e) { CursorY = e.pageY; })
viewGridRow的配置如下所示:
ondblClickRow: function (rowid) {
jQuery("#grid").jqGrid('viewGridRow', rowid, {
top: CursorY,
left: CursorX,
modal: true,
width: 1500,
caption: "View Item",
recreateForm: true,
beforeShowForm: function (form) {
jQuery("#grid").
setColProp('last_instruct', { formatter: "unformat" });
},
});
},
问题是它似乎不起作用
有人知道我做错了什么吗?刚刚在我自己的一个网格上进行了测试,如前所述,问题是jQgrid在更新变量之前正在处理ondblClick事件 取消以下约束:
var CursorX;
var CursorY;
$(document).bind('dblclick', function (e) { CursorX = e.pageX; })
$(document).bind('dblclick', function (e) { CursorY = e.pageY; })
然后搬到
top: e.pageY,
left: e.pageX,
您还需要将ondblClickRow更新为
ondblClickRow: function (rowid, iRow, iCol, e) {
编辑(以确保jQgrid每次都重新创建一个新的视图/编辑等窗口。
Ex(每次重新创建一个新的编辑表单)
作为旁注,您可能需要考虑当用户双击一个区域时会发生什么情况,该区域将生成一个超出正常查看区域的表单。我看到
var CursorX;
两次。CursorY
不存在。如果您手动设置top:,left:的值,它们是否可以定位网格?另外,您确定吗设置了r变量?JQgrid是否覆盖/禁用了您设置CursorX/Y值的事件。@标记手动设置值时,它可以工作,我通过alert()
检查了值,结果很好。您通过警报检查的值在ondblClickRow:函数(rowid)中
?这很公平,但atm is说e是未定义的。我知道我必须以某种方式定义事件,但我不知道如何定义。如果能提供更多帮助,我们将不胜感激:)请参阅我在ondblClickRow中定义e的编辑:函数调用修复了问题,但仅在第一个选项上,之后,每单击一项,表单就会在初始生成点显示。现在尝试调试它,如果我修复了它,我会发布+1为了更接近答案tho:)我想你可能需要考虑添加类似于上面编辑的内容,以便每次都重新创建表单。我正在忙于另一项任务,一旦有机会,我将检查解决方案并将其发布在此处。
$.extend($.jgrid.edit, { closeAfterEdit: true, recreateForm: true });