jQGrid中用于事件viewGridRow的top和left选项存在问题,无法解析光标位置

时间:2013-01-03 14:17:11

标签: javascript jquery jqgrid

我的jQGrid出了问题。我试图使它成为当viewGridRow事件触发时,将弹出窗口的位置设置到光标的位置。我在网格中有一个很长的列表,默认情况下将窗口放在网格的顶部。

atm我有通过jQuery检索光标位置的函数:

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" });
        },
    });
},

问题是它似乎无法发挥作用。

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

刚刚在我自己的一个网格上测试,并且正如所写的那样,问题是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每次都重新创建一个新的视图/编辑等窗口。 例如(每次重新创建一个新的编辑表格)

    $.extend($.jgrid.edit, { closeAfterEdit: true, recreateForm: true });

作为旁注,您可能想要考虑当用户双击产生将在正常查看区域之外的表单的区域时会发生什么。