繼續使用this topic我想將擴展節點保存在cookie中。這是最好的方法嗎?在cookie中發送展開的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.S.我總是得到這個愚蠢的警報:)
您的文章沒有太多的上下文來解釋代碼段;請更清楚地解釋你的情況。
你加載樹電網在使用Ajax一旦從服務器加載孩子每花費樹節點的?我會盡量在稍後檢查問題。在所有我會建議你閱讀[答案](http://stackoverflow.com/a/8436273/315935)和[這一個](http://stackoverflow.com/a/8547852/315935)我在哪裏使用'localStorage'而不是Cookie。可能它也是更好的方法。 – Oleg 2012-02-08 12:19:18
所有的數據(關於父母和孩子)在網格建設期間通過Ajax傳遞一次 – dr0zd 2012-02-08 12:49:13
我的問題是所有的數據是否通過* 1加載* Ajax請求會在樹節點擴展期間按需加載。 – Oleg 2012-02-08 12:59:06