0

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

问题是它似乎不起作用。

有人知道我做错了什么吗?

4

1 回答 1

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

作为旁注,您可能想考虑当用户双击一个区域时会发生什么,该区域会生成一个超出正常查看区域的表单。

于 2013-01-03T15:23:00.080 回答