続行this topic拡張ノードをクッキーに保存します。それは最善の方法ですか?拡張されたTreeGridノードをクッキーに送信
JSONのデータチェックではわかりません。
なぜexpandRowが機能しないのですか?
var gridId = "#table";
var grid = $(gridId);
grid.jqGrid({
...
loadComplete: function() {
var ids = grid.jqGrid('getDataIDs');
var cookie = $.cookie(gridId + '_expanded');
var expanded = false;
if (typeof(cookie) == 'string')
var expanded = JSON.parse(cookie);
for (var i=0;i<ids.length;i++) {
var id=ids[i];
var row_data = $(this).jqGrid('getRowData', id);
if (expanded && id in expanded && expanded[id] == 'true')
$(gridId + ' tr#' + id + ' div.treeclick').trigger("click");
//Why it doesn't work?
//grid.jqGrid('expandRow', row_data);
}
}
...
});
function setCookie() {
var ids = grid.jqGrid('getDataIDs');
var expanded = Object();
var string = '';
for (var i=0;i<ids.length;i++) {
var id=ids[i];
var rowData = grid.jqGrid('getRowData', id);
if (rowData.parent != '' && grid.jqGrid('isVisibleNode', rowData) === true)
expanded[rowData.parent] = true
}
for (e in expanded)
string += '"' + e + '":' + '"' + expanded[e] + '",';
$.cookie(gridId + '_expanded', '{'+ string.substring(0, string.length - 1) + '}', { expires: 365 });
}
var orgExpandNode = $.fn.jqGrid.expandNode, orgCollapseNode = $.fn.jqGrid.collapseNode;
$.jgrid.extend({
expandNode : function(rc) {
orgExpandNode.call(this, rc);
setCookie();
},
collapseNode : function(rc) {
orgCollapseNode.call(this, rc);
setCookie();
},
});
P.私はいつもこの愚かな警告を得る:)
あなたの投稿はコードセクションを説明する文脈があまりありません。あなたのシナリオをより明確に説明してください。
を使用すると、すべてのツリーノードを消費しているサーバーからの子をロードするために、一度使用アヤックスのでツリーグリッドをロードしますか?私は後でこの問題を調べようとします。私が使う前に[回答](http://stackoverflow.com/a/8436273/315935)と[this one](http://stackoverflow.com/a/8547852/315935)を読むことをお勧めしますクッキーの代わりに 'localStorage'を使います。おそらくそれはあなたの場合でも良い方法です。 – Oleg
すべてのデータ(親と子供について)は、グリッドの構築中にAjax経由で一度来ました – dr0zd
私の質問は、ツリーノードを展開中にオンデマンドでロードされる* 1 * Ajaxリクエストを介してすべてのデータがロードされるかどうかでした。 – Oleg