0

シンプルなサブグリッドを使用した jqGrid (4.1.1) があります。サブグリッドを表示するためにレコードをプラス編集すると、通常とは異なる loadui が表示されます。

私の現在の構成は を使用することloadui: noneであり、beforeRequestイベントでは私自身のローダーを示しています。

イベントでカスタム メッセージを使用するsubGridBeforeExpandと、メッセージとデフォルト メッセージが表示されます。また、読み込みが完了したときに div を非表示にする場所もわかりません。subGridRowExpanded適切な場所ではないようです。

要するに:

  1. サブグリッド loadui を非表示にする jqGrid 設定はありますか、またはそれを非表示にするために独自の JavaScript をロールする必要がありますか?
  2. ローダーを閉じることができるように、サブグリッドが読み込まれていることを確認するために、どのイベントにフックできますか?

前もって感謝します!

4

1 に答える 1

1

サブグリッドのコードを見ると、読み込み中の div が表示される場所を見つけることができます

$("#load_"+ts.p.id).show();

一方、標準 (メイン) グリッドを表示するコードは次のようになります (こちらを参照)。

beginReq = function() {
    ts.grid.hDiv.loading = true;
    if(ts.p.hiddengrid) { return;}
    switch(ts.p.loadui) {
        case "disable":
            break;
        case "enable":
            $("#load_"+$.jgrid.jqID(ts.p.id)).show();
            break;
        case "block":
            $("#lui_"+$.jgrid.jqID(ts.p.id)).show();
            $("#load_"+$.jgrid.jqID(ts.p.id)).show();
            break;
    }
}

したがって、設定がメイン グリッドでのみloadui: "disable"使用されることがわかります。上記のコードからわかるように、その他の値(使用する不明な「なし」の値など) は、 として解釈されます。loadui"enable""block"loadui: "disable"

私の見解では、これは subgrid のバグです。

回避策として、 jqGrid の作成後にロード div を削除することをお勧めします。たとえば、グリッドのテーブル要素にid="list"次の行がある場合:

$("div#load_list").remove();

div を削除するだけで、メイン グリッドとサブグリッドの両方に表示されることはありません。

コメントに基づいて更新: OK ! 今、私はあなたの問題を理解しています。その前に私はあなたが使用しdatatype: 'local'ました。一部のリモート データ型とblockUIプラグインを使用する場合は、次の操作を実行できます。ajaxサブグリッド用に jqGrid によって現在使用されている呼び出しは、ここで確認できます。イベントを使用するcompleteため、 jQuery.ajaxsuccessのおよびerrorイベントは現在無料です。したがって、イベントを使用して、読み込みオーバーレイを閉じるメソッドを呼び出すことができます。jqGrid のajaxSubgridOptionsパラメータを使用できます.unblock()$.unblockUI()

$("#list").jqGrid({
    // options of grid of subgrid ...
    ajaxSubgridOptions {
        success: function () {
            $.unblockUI(); // or $("#list").unblock();
        },
        error: function () {
            $.unblockUI(); // or $("#list").unblock();
        }
    }
);

問題が解決しない場合は、blockUIプラグインの使用方法を説明するコード フラグメントを質問に含める必要があります。ブロック解除メソッドの呼び出しを挿入してコードを変更します。

于 2011-08-01T15:48:51.680 に答える