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

自分のグリッドの 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 に答える