一个ext tree的例子

<script type="text/javascript">
Ext.onReady(
function(){
var tree=new Ext.tree.TreePanel({
el:
'tree',
loader:
new Ext.tree.TreeLoader()
});

var root =new Ext.tree.AsyncTreeNode({
text:
'我是根',
children:[{
text:
'01',qtip:'我是鼠标提示',//如果有qtip属性,则必须要有Ext.QuickTips.init()这句话
children:[{
text:
'01-01',
leaf:
true//这里为true代表他下面已经没有子节点,不需要加载出来
},{
text:
'01-02',
children:[{
text:
'01-02-01',
leaf:
true
},{
text:
'01-02-02',
leaf:
true
}]
},{
text:
'01-03',
leaf:
true,
href:
"http://www.baidu.com",//通过点击节点,可以链接到一个地址
hrefTarget:'_blank'
}]
},
{
text:
'02',
leaf:
true,
icon:
'user_female.png'//自定义节点的图标
}]
});
tree.setRootNode(root);
tree.render();

tree.on(
'dblclick',function(node){
Ext.Msg.alert(
'您刚刚双击了',node.text);
});

//右键菜单
var contextmenu =new Ext.menu.Menu({
id:
'thecontextmenu',
items:[{
text:
'选择',
handler:
function() {
alert(
'你选择的是='+ tree.getSelectionModel().getSelectedNode().text +" 结点");
}
}]
});

//右键菜单显示
tree.on('contextmenu',function(node,e){
e.preventDefault();
node.select();
//节点进入选中状态
contextmenu.showAt(e.getXY());
});

tree.on(
'click',function(node){
Ext.Msg.show({
title:
'提示',
msg:
'您点击了:'+node,
animEl:node.ui.textNode
});
});

root.expand();
Ext.QuickTips.init();
//初始化接点提示
tree.expandAll();//展开所有节点
});
</script>

 注:body中应该有个<div id='tree'></div>,最好给其设置合适的高度,用来显示tree。比如: <div id="tree" style="width:200px; height:200px;"></div>

页面截图:

今天一同学问我假如说动态的加载节点怎么弄,呵呵,查了下资料,最终还是弄出来了。js代码:

<script type="text/javascript">
    Ext.onReady(function(){
        var tree= new Ext.tree.TreePanel({
            el:'tree',
            loader:new Ext.tree.TreeLoader({dataUrl:'GetTreeServlet'})//GetTreeServlet是我在后台的servlet的名字
        });
        var root = new Ext.tree.AsyncTreeNode({text:'偶是根'});
        tree.setRootNode(root);
        root.expand();
        tree.render();
        //tree.expandAll();//展开所有节点
    });
</script>

后台的java代码:

    request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        StringBuffer buffer = new StringBuffer();
        /***
         * 返回的内容要是这样:
         * [
         * {text:'根节点一',children:[
         *     {text:'根节点一一',leaf:true},
         *     {text:'根节点一二',leaf:true}
         * ]},
         * {text:'根节点二',leaf:true}
         * ]
         * **/
        buffer.append("[");
        buffer.append("{");
        buffer.append("text:'根节点一',");
        buffer.append("children:");
        buffer.append("[");
        buffer.append("{");
        buffer.append("text:'根节点一一',leaf:true");
        buffer.append("},");
        buffer.append("{");
        buffer.append("text:'根节点一二',leaf:true");
        buffer.append("}");
        buffer.append("]");
        buffer.append("},");
        buffer.append("{");
        buffer.append("text:'根节点二',");
        buffer.append("leaf:true");
        buffer.append("}");
        buffer.append("]");
        response.getWriter().print(buffer.toString());

页面截图:

这里可以灵活运用,比如说从数据库取数出来,可以按照"[{}]"的格式进行拼接。呵呵,另外在说一句,dataUrl后面可以是一个txt文件,但是假如说txt文件中有中文的话,那么你要把txt的文件编码格式设为"UTF-8",在页面才能正确读取。否则就会乱码。另外这是一段写入到txt文件中的设定编码方式为"UTF-8"的代码:

File file = new File("D:\\workspace\\extproject\\WebContent\\test.txt");
//这里记得要设定编码方式
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));

 

posted @ 2011-07-25 13:15  yinyuyi  阅读(2441)  评论(0编辑  收藏  举报