iteye_566 2010-06-22 13:52
浏览 231
已采纳

求一个例子:extjs树形菜单动态从后台加载节点的实例

本人目前在自学extjs,读的相关书籍是《深入浅出extjs》但是对于本书中的树形菜单动态加载节点以及相关节点的加载和点击事件,总是不能写出满意的例子来,希望各位中能抽出时间的帮忙写一个完整的实例,(可以写成jsp+servlet的,容易一些)要求:
首先,加载所有节点,然后再点击节点的时候能够进行请求提交。当然了,所有的节点都是动态从servlet中取到的。谢谢了。。。

  • 写回答

3条回答 默认 最新

  • upup1000 2010-06-22 15:35
    关注

    TreeSevice
    [code="java"]
    package name.sencha;

    public class TreeService {
    public String getLevel1Nodes(){
    return "[{text:\"北京\", id:\"1\"},{text:\"吉林\", id:\"2\"}]";
    }

    public String getLevel2Nodes(){
        return "[{text:\"丰台\", id:\"1-1\"},{text:\"海淀\", id:\"1-2\", leaf:true},{text:\"东城\", id:\"1-3\", leaf:true},{text:\"西城\", id:\"1-4\", leaf:true}]";
    }
    
    public String getLevel3Nodes(){
        return "[{text:\"长春\", id:\"2-1\", leaf:true},{text:\"吉林\", id:\"2-2\", leaf:true},{text:\"白山\", id:\"2-3\", leaf:true},{text:\"白城\", id:\"2-4\", leaf:true}]";
    }
    
    public String getLevel4Nodes(){
        return "[{text:\"丰台1区\", id:\"1-1-1\", leaf:true},{text:\"丰台2区\", id:\"1-1-2\", leaf:true},{text:\"丰台3区\", id:\"1-1-3\", leaf:true},{text:\"丰台小学\", id:\"1-1-4\", leaf:true}]";
    }
    
    public String getTreeNodeS(String id){
        if(id==null||id.length()==0){
            return "[]";
        }else if(id.equals("0")){
            return getLevel1Nodes();
        }else if(id.equals("1")){
            return getLevel2Nodes();
        }else if(id.equals("2")){
            return getLevel3Nodes();
        }else{
            return getLevel4Nodes();
        }
    }
    

    }

    [/code]

    TreeServlet :
    [code="java"]
    package name.sencha;

    import java.io.IOException;

    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class TreeServlet extends HttpServlet{
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response){
    String id = request.getParameter("id");
    if(id!=null&&id.length()>0){
    TreeService service = new TreeService();
    try {
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(service.getTreeNodeS(id));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response){
        doPost(request, response);
    }
    

    }

    [/code]

    web.xml:
    [code="java"]

    treeservlet
    name.sencha.TreeServlet


    treeservlet
    /tree

    [/code]

    html :
    [code="html"]
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



    Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = "../../ext-3.0.0/resources/images/default/s.gif"; var rootNode = new Ext.tree.AsyncTreeNode({ text : "根", id : "0", expanded : true }); var tree = new Ext.tree.TreePanel({ root : rootNode, loader : new Ext.tree.TreeLoader({ dataUrl : "../../tree" }), width : 200, height : 400 }); tree.on("beforeload" , function(node){ tree.loader.baseParams.id = node.id; }); tree.on("click", function(node){ Ext.Ajax.request({ url : "../../tree", params : {id:1}, success : function(res){ var txt = res.responseText; var obj = Ext.decode(txt); alert(obj.length); } }); }); tree.render(Ext.get("tree_div")); });

    Insert title here



    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化