| 发表于:2007-06-27 20:10:24 楼主 |
我是想实现懒装入,在树刚展开的时候只显示第一层节点,等到要展开具体的第二层节点的时候再到后台去读数据。现在只能展开第一层节点,点击展开节点的那个加号没有反应。麻烦帮我看看是怎么回事。谢谢! jsp页面如下 <script type= "text/javascript "> dojo.require( "dojo.widget.* "); dojo.require( "dojo.widget.treev3 "); dojo.require( "dojo.widget.treenodev3 "); dojo.require( "dojo.widget.treelinkextension "); dojo.require( "dojo.widget.treeselectorv3 "); dojo.require( "dojo.widget.treerpccontroller "); dojo.require( "dojo.widget.treeloadingcontrollerv3 "); dojo.require( "dojo.widget.treecontextmenu "); dojo.require( "dojo.widget.treedociconextension "); dojo.require( "dojo.widget.treedisablewrapextension "); dojo.hostenv.writeincludes(); </script> <style> .mycssclass { font-family: arial, helvetica, sans-serif; font-size: 18px; font-style: italic; } .treeicontreenonleaficonnodetype1{ background-image: url( ' <%=request.getcontextpath()%> /images/mailbox1.gif '); } .treeicontreeleaficonnodetype1{ background-image: url( ' <%=request.getcontextpath()%> /images/closed.gif '); } </style> </head> <body> <script type= "text/javascript "> var controller = dojo.widget.createwidget( "treeloadingcontrollerv3 ", {widgetid: "controller ", dndcontroller: "create ", rpcurl: " <%=request.getcontextpath()%> /getmenutree.do "}); var link = dojo.widget.createwidget( "treelinkextension ", {widgetid: "link "}); var docicons = dojo.widget.createwidget( "treedociconextension ", {widgetid: "docicons "}); var disablewrap = dojo.widget.createwidget( "treedisablewrapextension ", {widgetid: "disablewrap "}); var treeselector = dojo.widget.createwidget( "treeselectorv3 ", {widgetid: "treeselector "}); dojo.event.topic.subscribe( "nodeselected ", "treeselectfired "); dojo.addonload(function(){ //var kw = {url:controller.rpcurl, sync: "true "}; //controller.runrpc(kw); //controller.dndcontroller = "create "; var treenodes = <%=request.getattribute( "strmenus ")%> ; /* var treenodes = [ { "isfolder ":false, "title ": "title1 ", "tree ": "roottree ", "objectid ": "775161 ", "widgetid ": "775161 "}, { "isfolder ":true, "title ": "title2 ", "tree ": "roottree ", "objectid ": "775162 ", "widgetid ": "775162 "} ]; */ var tree = dojo.widget.createwidget( "treev3 ", {widgetid: "menutree ", listeners: [controller.widgetid,treeselector.widgetid, link.widgetid, docicons.widgetid, disablewrap.widgetid], "toggle ": "wipe ", dndmode: "between " }); /** lazy initialization is in effect only root-level widgets will be created */ //controller.loadprocessresponse(tree, str); tree.setchildren(treenodes); //controller.expandtolevel(tree, 1); document.body.appendchild(tree.domnode); }); function treeselectfired() { alert( "treeselectfired "); // get a reference to the treeselector and get the selected node var treeselector = dojo.widget.manager.getwidgetbyid( 'treeselector '); var treenode = treeselector.selectednodes[0]; // get a reference to the songdisplay div var hostdiv = document.getelementbyid( "songdisplay "); var isfolder = treenode[ 'isfolder ']; if ( !isfolder) { var song = treenode[ 'title ']; var url = treenode[ 'url ']; //treenode.object = { href: 'http://www.google.com/ ' }; link(url); } else { } } function link(url){ //alert(url); if(url){ parent.rightframe.location.href=url; } } function init() { //get a reference to the treeselector var treeselector = dojo.widget.manager.getwidgetbyid( 'treeselector '); //connect the select event to the function treeselectfired() dojo.event.connect(treeselector, 'select ', 'treeselectfired '); } dojo.addonload(init); </script> </body> </html> java代码如下 list <menu> menus = getmenus(); jsonarray result = new jsonarray(); if (menus != null && menus.size() > 0) { listiterator <menu> itmenus = menus.listiterator(); while (itmenus.hasnext()) { menu m = itmenus.next(); try { jsonobject jsonmenuobject = new jsonobject(); jsonmenuobject.put( "title ", m.getname()); /* jsonmenuobject.put( "childiconsrc ", "../images/ " + m.getimage()); */ jsonmenuobject.put( "nodedoctype ", m.getimage()); jsonmenuobject.put( "isfolder ", mgr.haschildren(m)); jsonmenuobject.put( "widgetid ", m.getnumber()); jsonmenuobject.put( "objectid ", m.getnumber()); /* jsonarray children = getchildren(m); if (children.length() > 0){ jsonmenuobject.put( "isfolder ", true); jsonmenuobject.put( "children ", children); }else{ jsonmenuobject.put( "isfolder ", false); jsonmenuobject.put( "url ", m.getaction()); } */ result.put(jsonmenuobject); } catch (jsonexception e) { e.printstacktrace(); } } } strmenus = result.tostring(); // strmenus = "[{title: \ "node 1\ " ,children: [{title: \ "node // 1.1\ "},{title: \ "node 1.2\ "} ]}, {title: \ "node 2\ " }] "; /* httpservletresponse response = getresponse(); response.setcontenttype( "text/json; charset=gb2312 "); printwriter out = response.getwriter(); system.out.println(strmenus); out.write(strmenus); */ system.out.println(strmenus); return success; |
|
|
|
|