Ext 4 树:
1.定义数据源 继承自 TreeStore
reader的root属性:表示从哪读取数据, 默认为 'children'
nodeParam: 发送请求时的参数名字,默认为 'node'
/**
* 定义热点地区数据源
*/
Ext.define('WOC.store.HotZoneStore',{
extend: 'Ext.data.TreeStore',
nodeParam:'parentCode',
proxy: {
type: 'ajax',
url : 'ajax/hotSpotsTree',
reader: {
type: 'json',
root: 'returnMsg'
}
},
root: {
id : -1,//TOFIX 和数据库设定保持同步
text:'热点结构管理',
expanded: false
}
});
id和text必须
leaf 表示是否为叶子节点,非必须,ext文档有说到:The string "true" and the number 1 are converted to boolean true.
{"returnMsg":[{"id":"1902127771","text":"南京市","data":{"PARENT_CODE":"3200000000000","HOTCOUNTS":0
,"REMARK":null,"ZONE_NAME":"南京市","ZONE_CODE":"1902127771"},"leaf":1}
],"success":"true"}
2.定义tree
单击事件 itemclick,参数record有root属性,可用 record.get("root") 来判断是否为根节点,或根据id判断,record.get("id")
当返回的json数据带有额外信息的非简单信息时,如上面的data,发现record.get("data")去不到数据,原因未知,有待研究,
用record.raw.data可访问
刷新树:treeStore.load()
触发单击事件:tree.fireEvent('itemclick',tree,tree.getRootNode());
/**
* 定义热点地区树
*/
Ext.define('WOC.tree.HotZoneTree',{
extend: 'Ext.tree.Panel',
alias : 'widget.hotZoneTree',
store : treeStore,
height: 300,
title : '热点结构信息',
rootVisible: true,
renderTo: 'treeDiv',
listeners: {
itemclick: function(tree,record){
if(record.get("root")){
//根节点
}else{
var data = record.raw.data;
}
}
}
});
3.后台
树节点bean
public class ExtTreeNode {
private String id; //id
private String text; //文本
private int leaf; //叶子节点标识 1:叶子 0:树枝 ExtApi: The string "true" and the number 1 are converted to boolean true.
private Map<String, Object> data = new HashMap<String, Object>(); //附加信息
4.oracle10g 数据库几个树函数
connect by prior start with
connect_by_is_leaf 是否为叶子 ,1叶子 0 非叶子
select ZONE_CODE, ZONE_NAME, CONNECT_BY_ISLEAF from TB_HOTZONE
where PARENT_CODE = #parentCode#
connect by prior ZONE_CODE=PARENT_CODE start with PARENT_CODE = #parentCode#
order by ZONE_CODE