最近在做一个树形菜单,我使用了dhtmlxTree这一专门做树形菜单的控件,但我有个疑问,
我生成下面的页面时,root根节点默认是闭合的,我想一开始是子节点是展开的,怎么弄?
<link rel="STYLESHEET" type="text/css" href="/TestTree2/css/dhtmlxtree.css">

<script  src="/TestTree2/js/dhtmlxcommon.js"></script>
<script  src="/TestTree2/js/dhtmlxtree.js"></script>
<script  src="/TestTree2/js/dhtmlxtree_start.js"></script>
      <div 
        class="dhtmlxTree" 
        setImagePath="/TestTree2/img/treeSkin/csh_books/" 
      >
<ul>
<li>Root
<ul>
<li>Child1
<ul>
<li>Child 1-1</li>
</ul>
</li>
<li>Child2</li>
<li>Child3></li>
</ul>
</li>
</ul>
    
     </div>

解决方案 »

  1.   


    dhtmlxTree不是从xml文件加载树的吗?
      

  2.   

    楼上的,可以从XML里加载数据,但也可以直接写在JSP上
    我写在就是想写在JSP上面
      

  3.   

    那你加载完页面之后调用下openAllItems(itemId)
    展开目标节点下的所有子节点。
    <ul id="rootId">
    <li>Root window.onload=function (){
    openAllItems('rootId');
    }
    可以试试
      

  4.   

         <script type="text/javascript">
         
              window.onload=function ()
              { 
    openAllItems('rootId'); 
              }
         </script>
    楼上大哥,我试过了,不行
    我是觉得有没有配置这样的属性,比如说
         <div 
            class="dhtmlxTree" 
            setImagePath="/TestTree2/img/treeSkin/csh_books/" 
          > 
    我div里面的setImagePath就是直接写的,在比如我还可以在div里加enableDragAndDrop="true"(表示可拖动节点),我就不知道div里有没有这样的默认直接展开节点的属性
      

  5.   

    我知道 xml 文件中有 open属性 可以控制树是否展开的!
      

  6.   

    是呀 ,我也看到了,可我写在是从html中初始化的
    因为我不知道怎么从DB生成XML,在动态的调用生成的XML文件
    所以我只能从DB里读出数据到JSP,再页面中用循环生成树形现在就不知道如何生成的树形默认是展开的
      

  7.   

    可以从DB中读出数据 组成XML文件!在调用loadXML或者loadXmlString 加载树!!
      

  8.   

    楼上的 ,那请问下怎么组成XML文件呢,
    我记得在servlet里有个 response.setContentType("text/xml"),
    具体应该怎么弄呢?望指教
      

  9.   

    我以前用过是采用拼接字符串的方式!组成String 再将String 发到前台 赋值给js中的变量!!
    在调用tree.loadXMLString();加载整个树的!!
                    response.setContentType("text/html;charset=utf-8");                String xml;
                    StringBuffer contents = new StringBuffer();
    contents.append("<?xml version='1.0' encoding='UTF-8'?>");
    contents.append("<tree id='0'>");
                    //一些遍历操作
    contents.append("</tree>");
    xml = contents.toString();
    在jsp中加入<script language="JavaScript" type="text/javascript">
    tree = new dhtmlXTreeObject("treeboxbox_tree", "100%", "100%", 0);
    var xml="<%=%>";//调用方法赋值
    tree.loadXMLString(xml);
      

  10.   

    可以再xml中写好然后拼接字符串在servlet中输出
    和json差不多吧写在out.println(拼接的字符串);
      

  11.   

    不错哦,我去年也自己写了个DTree控件,但功能太少了,和这个相比,相差太远了,学习下,换到我以前的,呵呵,谢谢分享。
      

  12.   

    现在是可以解决了:
    <body onload="initTree()">
    <div id="treeboxbox_tree" setImagePath="/TestTree2/img/treeSkin/csh_books/" > 
    <ul> 
    <li open="1" id="id1">TITLE 1 
    <ul> 
    <li>OPTION 1</li> 
    </ul> 

    </ul> 
    </div>
    function initTree()
    {
    var myTree = dhtmlXTreeFromHTML('treeboxbox');

    myTree.openItem('root');



    }
    这样就可以展开了,但是这只能在在html中数据写死的情况下,如果我数据是放在request中,用${nodeName},
    这样JSP是不显示任何东西的 ,不知道为什么?
      

  13.   

    12楼: 我想问下,怎么把字符串发送给前台?  是不是把字符串保存在request中,
    随后在JSP里 用$表达式取出来呢? 还是其它意思?
      

  14.   

       不是直接生成一个XML文件文件流,把节点:item的属性:open 设为:0  再发送前台不就可以了吗?
      我以前是这样做的!
      

  15.   

    动态加载树!给一个参考文章http://cuwkuhaihong.javaeye.com/blog/389227