あなたがサブグリッドのコードを見ると、あなたがロードdiv要素がちょうど反対側に
$("#load_"+ts.p.id).show();
標準(メイン)グリッドを表示するためのコードとして表示されますhere場所を見つけることができます(ここを参照)、以下のようになります。
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"
と解釈されます。
私の見解では、はサブグリッドのバグです。
回避策として、jqGridの作成後にローディングdivを削除することをお勧めします。あなたのグリッドのテーブル要素は、例えばid="list"
を持っている場合は、次の行:
$("div#load_list").remove();
はただのdivを削除し、あなたがメイングリッドとサブグリッドの両方でそれを見ることはありません。
更新済みコメントに基づいて:OK!今私はあなたの問題を理解しています。それ以前は、datatype: 'local'
を使っていました。使用法の場合、リモートデータ型とblockUIプラグインを使用すると、次のことができます。サブグリッドのjqGridで現在使用されているajax
呼び出しは、hereです。 complete
イベントを使用しているため、success
とerror
のイベントはjQuery.ajaxです。したがって、イベントを使用して、ローディングオーバーレイを閉じる方法.unblock()
または$.unblockUI()
メソッドを呼び出すことができます。あなたはそれがあなたの問題を解決していない場合は、あなたの質問にあなたがblockUIプラグインを使用して、私はブロック解除メソッドの呼び出しを挿入することで、コードを修正する方法を説明したコードの断片が含まれている必要がありjqGrid
$("#list").jqGrid({
// options of grid of subgrid ...
ajaxSubgridOptions {
success: function() {
$.unblockUI(); // or $("#list").unblock();
},
error: function() {
$.unblockUI(); // or $("#list").unblock();
}
}
);
のajaxSubgridOptionsパラメータを使用することができます。
これはバグと見なされることに同意します。あなたのソリューションは魅力的に機能します。サブグリッドのロードが完了したらローダーを隠す方法について考えていますか? – IronicMuffin
@IronicMuffin:申し訳ありませんが、あなたが何を意味するのか分かりません。どのローダーを非表示にしたいですか?ローダーdivを削除すると、ローダーは表示されません。あなたが持っている状況をより正確に説明できますか?あなたが使っている 'subgridtype'はどれですか? – Oleg
blockuiプラグインを使用して、ロード中のメッセージで自分のオーバーレイを表示しています。私はこれを 'subGridBeforeExpand'に示しますが、' subGridLoadComplete'イベントがないので、私のローダを隠すことができます。 – IronicMuffin