2011-08-01 25 views
0

私は単純なサブグリッドを使ってjqGrid(4.1.1)を持っています。サブグリッドを表示するためにレコードがプラスエディットされると、通常のものとは異なるloaduiがポップアップします。jqGridのサブグリッドのloaduiを変更することはできますか?

私の現在の設定はloadui: noneを使用し、beforeRequestイベントでは私自身のローダーを表示します。

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

  1. はjqGridは、サブグリッドloaduiを非表示に設定するか、私はそれを隠すために自分のjavascriptをロールバックしなければならないのはありますか?
  2. ローダーを閉じるためにサブグリッドがロードされていることを確認するためにどのイベントに接続できますか?事前に

ありがとう!

答えて

1

あなたがサブグリッドのコードを見ると、あなたがロード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イベントを使用しているため、successerrorのイベントは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パラメータを使用することができます。

+0

これはバグと見なされることに同意します。あなたのソリューションは魅力的に機能します。サブグリッドのロードが完了したらローダーを隠す方法について考えていますか? – IronicMuffin

+0

@IronicMuffin:申し訳ありませんが、あなたが何を意味するのか分かりません。どのローダーを非表示にしたいですか?ローダーdivを削除すると、ローダーは表示されません。あなたが持っている状況をより正確に説明できますか?あなたが使っている 'subgridtype'はどれですか? – Oleg

+0

blockuiプラグインを使用して、ロード中のメッセージで自分のオーバーレイを表示しています。私はこれを 'subGridBeforeExpand'に示しますが、' subGridLoadComplete'イベントがないので、私のローダを隠すことができます。 – IronicMuffin

関連する問題