1

subGridRowExpanded を使用してサブグリッドを持つグリッドがあります。

そして、グリッドの一部の行を動的に拡張したいので、最初のグリッドの GridComplete イベントに次のように記述しました。ids は、グリッドの行 ID の配列です

for(int i =0; i< ids.length; i++) {
    //Checking with condition
    $("#myGridName").expandSubGridRow(ids[i]);
}

次のコードでも試してみましたが、何らかの理由で、2 番目のレベルの GridComplete のチェックボックスが、最後に展開された行にのみ追加されます。

$("#myGridName").expandSubGridRow(ids[0]);
$("#myGridName").expandSubGridRow(ids[1]);

上記のコードは、適切な行を展開します。しかし、

Subgrid の GridComplete イベントで、各行のボックスをチェックしました。

ここで、いくつかの Chekc ボックスをチェックする必要があります。

しかし、問題は、

subgrid_row_id が間違っている

つまり、展開される最後のサブグリッドの ID は、親グリッドの SubGridRowExpanded に割り当てられます。

注:サブグリッドの各行に手動でチェックボックスを追加しています

前もって感謝します。

4

1 に答える 1

0

回答で説明したように、あなたが正しいと理解している場合は、非常に近い問題があります。あなたがやろうとしていることは、オプションのexpandOnLoad: trueプロパティがすべきことと同じようです。回答subGridOptionsで説明したように、 jqGrid は Ajax リクエストのキューイングをサポートしていません。実行すると

$("#myGridName").expandSubGridRow(ids[0]);

remotedatatypeまたはsubgridtype('json' または 'xml') を使用すると、Ajax リクエストがサーバーに送信されます。サーバーから対応する応答を受け取るまで、内部プロパティ

$("#myGridName")[0].grid.hDiv.loading

に設定されtrue、たとえば from からの他のすべての Ajax リクエストは$("#myGridName").expandSubGridRow(ids[1])単にスキップ (無視) されます。

の現在の実装にも同じ問題 (バグ) が存在しexpandOnLoad: trueます。公式の jqGrid デモで「Hierarchy (4.0) new」ツリー ノードを開いてから、デモの「Expand all Rows on load」を見ると、約束どおりにすべての行が正しく展開されていないことがわかります (グリッドをスクロールする必要があります)。すべてのサブグリッドを表示するには)。

ロード時にサブグリッドの拡張を正しく実装するには、次のことを行う必要があると思います

  • 折りたたまれたサブグリッドのリスト (対応する行のクラスは "sgcollapsed" です) を調べて、最初に見つかった subgrid のみを展開する必要があります。
  • 次のサブグリッドの展開は、サーバーからの応答が受信されて処理された後でのみ行う必要があります。

サブグリッドを読み込んだ後にイベントが発生しないため、jqGrid オプションsuccessのコールバック関数を使用することをお勧めします。サブグリッドでの Ajax リクエストの現在の実装は、コールバックのに呼び出されるjQuery.ajax (こちらを参照)のコールバック関数を使用します。したがって、コールバックを jqGridのオプションのメソッドとして 定義できます。コールバック内で、次のノードを呼び出すことができます (まだ展開されていない場合)。方法で、すべてのサブグリッドを開くことができます。ajaxSubgridOptionsloadCompletecomplete successsuccessajaxSubgridOptionssuccess$("#myGridName").expandSubGridRow(ids[i])

サブグリッドをより効果的に列挙するには、答えが役立つ場合があります。

于 2011-11-08T10:57:17.003 に答える