close
同時在 Chrome / Firefox / IE 開啟樹狀目錄,想不到只有 IE 沒辦法顯示 TreePanel 的節點。在網路上搜尋一下找到兩個辦法,最後我又發現加上昨天的 requestMethod 也有效,一併筆記。
解決方法一:《ExtJs TreePanel使用TreeLoader在IE下无法正常加载显示的解决方法》
這裡的作法是用 AJAX 取得值,再把值餵給 TreePanel。
Ext.Ajax.request({
url: 'xxx.ashx',
success: function(request) {
// forumTree 是一個 TreePanel,在這裡透過 AJAX 取值後,把值填回 forumTree 中
var data = Ext.util.JSON.decode(request.responseText);
forumTree.getRootNode().appendChild(data);
forumTree.getRootNode().expandChildNodes(true);
hideLoading();
},
failure: function() {
hideLoading();
Ext.MessageBox.show({
title: 'Error Messate',
msg: '取得資料時發生異常,請重試。',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.ERROR
});
}
});
解決方法二:《ExtJs2.0学习系列(13)--Ext.TreePanel之第二式(上) (转)》
這個作法是在接獲 loadexception 事件時,再次執行重新讀取作業,直到取得資料為止。
loader:new Ext.tree.TreeLoader({
url:"json.ashx",
listeners:{
"loadexception":function(loader,node,response){
node.loaded = false;
node.reload.defer(10,node); //不停重新讀取,直到取得為止
}
}
})
我自己的做法是和昨天遇到的狀況類似,加上 requestMethod,加上去在 IE 就可以正常讀出樹狀節點了。
loader: new Ext.tree.TreeLoader({
dataUrl: 'tree.ashx',
requestMethod: 'GET',
listeners: {
"beforeload": function() { app.loading = app.MenuTree.body.mask(); },
"loadexception": function(loader, node, response) { },
"load": function(loader, node, response) {
if (response.status == 200) {
app.MenuTree.body.unmask();
}
}
}
}),
全站熱搜
留言列表