1

jqgrid をツリーグリッドとして使用して階層を表示しています。
DBからデータを引っ張り出し、サーバーサイドで行った親子関係をもとに階層データを構築しています。
1 ページの読み込み x レベルまでツリーを読み込みます (これは、dB でのユーザー設定/設定に基づいています)。
したがって、ユーザーは最初のいくつかのレベルを見てから、ノードをクリックしてオンデマンドでさらに多くのレベルをロードします。

問題: 「loaded:true」を使用してロード時にツリーを展開できません。これにより、残りのレベルをオンデマンドでロードできなくなります。「expandRow」「expandNode」を使用してみました。これにより、ページの読み込み時にツリーが展開されますが、折りたたみ時に問題が発生します。ツリー ノードを折りたたむことができません。

ツリーを自動展開し、ページの読み込み時にすべてのノードを表示し、ユーザーが残りのノードをオンデマンドで読み込めるようにする正しい方法は何ですか。コードスニペット:

gridComplete: function () {
            setTimeout(function () {
                debugger;
                var ids = jQuery("#jqgTreeGrid").getDataIDs();
                for (var i = 0; i < ids.length; i++) {
                    rootNode = $("#jqgTreeGrid").jqGrid('getRowData')[i];
                    rootNode._id_ = rootNode.Id;
                    //rootNode.expanded = true;
                    $("#jqgTreeGrid").jqGrid('expandRow', rootNode);
                    $("#jqgTreeGrid").jqGrid('expandNode', rootNode);
                    //$("#" + rootNode._id_ + " div.treeclick")
                   // .removeClass("ui-icon ui-icon-triangle-1-e treeclick tree-plus")
                   // .addClass("ui-icon ui-icon-triangle-1-s treeclick tree-minus");


                }
            }, 10);


        },
}
4

1 に答える 1

0

使用できるのはexpanded、jqGridがデータで探しているフィールドです。隣接モデルを使用していると仮定すると(一般的な考え方は入れ子集合モデルでも同じですが)、jqGridはリーダーを拡張してさらにいくつかのフィールドを探します。

treeReader = {
   level_field: "level",
   parent_id_field: "parent",
   leaf_field: "isLeaf",
   expanded_field: "expanded"
}

ほとんどの場合、、、およびフィールドをすでに使用してlevelparentますisLeaf。このexpandedフィールドはオプションですが、存在し、その値がtrueの場合、jqGridはロード時にノードを自動拡張します(必要に応じてデータを要求します)。

于 2012-12-05T13:07:37.483 に答える