做了七天的动态树,虽然还没有做完但先把一些比较重要的东西记下来。
目前实现了点击节点动态加载树的功能,但点击左侧的箭头相应的事件还没有找到,还是希望有经验的朋友可以指点一二。
<h:panelGrid columns="2" width="100%" columnClasses="col1,col2">
<rich:tree style="width:300px" nodeSelectListener="#{tree1bean.nodeload}" toggleOnClick="true" switchType="ajax" value="#{tree1bean.treeNode}">
</rich:tree>
</h:panelGrid>
以上的toggleOnClick实现了点击节点时展开、关闭树节点。
switchType="ajax"实现了局部刷新,只是树加载的部分刷新,但不重载整个页面。
package org.jboss.test.main;
import java.util.List;
import javax.ejb.Remove;
import javax.faces.event.AbortProcessingException;
import javax.persistence.EntityManager;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.richfaces.component.UITree;
import org.richfaces.event.NodeExpandedEvent;
import org.richfaces.event.NodeSelectedEvent;
import org.richfaces.model.TreeNode;
import org.richfaces.model.TreeNodeImpl;
@Scope(ScopeType.SESSION)
@Name("tree1bean")
public class Tree1Bean{
private Tree tree;
private TreeNode treenode = null;
private List<Tree> onloadtree;
private List<Tree> onloadtree1;
private String selectnodesql = "from Tree t where t.parentid = ? order by t.id";
private int linkid;
private int flg;
private int parentid;
@In("entityManager")
private EntityManager em;
private void firstNode(int id,TreeNode node){
onloadtree = em.createQuery(selectnodesql).setParameter(1, id).getResultList();
for (int i=0;i<onloadtree.size();i++){
TreeNodeImpl nodeImpl = new TreeNodeImpl();
nodeImpl.setData(onloadtree.get(i).getName());
node.addChild(new Integer(onloadtree.get(i).getId()), nodeImpl);
secondeNode(onloadtree.get(i).getId(),nodeImpl);
}
}
private void secondeNode(int id,TreeNode node){
onloadtree1 = em.createQuery(selectnodesql).setParameter(1, id).getResultList();
for (int i=0;i<onloadtree1.size();i++){
TreeNodeImpl nodeImpl = new TreeNodeImpl();
nodeImpl.setData(onloadtree1.get(i).getName());
node.addChild(new Integer(onloadtree1.get(i).getId()), nodeImpl);
}
}
public TreeNode getTreeNode(){
if (treenode == null){
treenode = new TreeNodeImpl();
parentid = 0;
firstNode(parentid,treenode);
}
return treenode;
}
public void nodeload(NodeSelectedEvent event){
UITree tree = (UITree) event.getComponent();
String sss [] = tree.getRowKey().toString().split(":");
linkid = Integer.parseInt(sss[sss.length-1]);
System.out.println("linkid="+linkid);
tree.clearTreeNodeState();
firstNode(linkid,tree.getModelTreeNode());
}
public int getLinkid() {
return linkid;
}
public void setLinkid1(int linkid) {
this.linkid = linkid;
}
@Remove
public void destroy() {
// TODO Auto-generated method stub
}
}
以上的tree.clearTreeNodeState();实现了收缩节点以后其以后的节点都收缩了回去。回到了初始状态
分享到:
相关推荐
- **<rich:tree>**:创建可扩展的树形视图,支持拖放操作和节点状态管理。 - **<rich:dragDropTree>**:增强版的树组件,支持拖放操作,常用于构建可配置的树状结构。 ### RichFaces 集成与配置 - **Maven 依赖**...
- **代码实例:构建一棵树**:通过具体代码示例展示了如何创建一个简单的树结构。 - **相关语句解释**:对代码中的关键部分进行了注释和解释。 #### (十六) JTree应用示例——文件路径 **AnimatedIconTreeExample....
首先,树形导航的实现通常基于`TreeViewer`类,它是Eclipse RCP(Rich Client Platform)提供的一个视图组件,能够展示层次结构数据。在代码中,我们看到了`TreeViewer`的引用,如`TreeSelection`、`TreePath`等,...
在本例中,我们将创建一个WCF服务来提供动态数据。在VS2010中,选择“添加新项目”,然后选择“WCF Service Library”模板。在服务接口中定义方法,以返回树形数据结构,例如一个包含节点和子节点的对象集合。 ```...
ExtJS 是一种强大的 Rich Internet Application (RIA) 框架,专注于客户端的复杂用户界面开发。与 Prototype 和 jQuery 等轻量级库不同,ExtJS 提供了一个完整的组件模型和丰富的用户界面控件,更适合构建功能丰富的...
"rcp 视图中的菜单--树形 - a13151055695@126的日志 - 网易博客.mht"可能包含有关RCP(Rich Client Platform)的信息,RCP是Eclipse平台的一部分,用于构建桌面应用程序。博主可能讲解了如何在RCP应用中创建和管理树...
总结来说,Ext2.0是一个功能强大的前端开发框架,通过一系列精心设计的组件和数据绑定机制,可以构建出功能强大、交互性良好的Web应用。通过学习并实践这些小例子,开发者可以逐步掌握Ext2.0的精髓,从而提高开发...
总结来说,"一个树状菜单"涉及了前端开发中的HTML、CSS、JavaScript基础,以及数据结构、算法、框架组件、响应式设计和无障碍性等多个方面。通过深入理解和实践这些知识点,开发者可以构建出美观且易用的树状菜单。
Dojo是一个开源的JavaScript框架,它提供了一套强大的工具集用于创建高度交互性的RIA(Rich Internet Applications)。Dojo的优势在于: 1. **高性能**:Dojo框架内部实现了高效的DOM操作和事件处理机制。 2. **跨...
- **Tree扩展**: 创建树形结构的数据展示。 - **Panel扩展**: 构建可拖动、可折叠的面板。 - **日历控件**: 添加日期选择器功能。 - **url变量替换**: 自动替换URL中的变量。 - **checkbox全选/反选**: 控制复选框的...
Ext 3.0是Sencha公司开发的一个JavaScript框架,主要用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。这个中文手册及帮助文档包含了Ext 3.0的全面介绍、API参考、示例代码以及常见问题解答,是...
ExtJS 是一个用于构建富客户端(Rich Internet Applications,RIA)的JavaScript库,它提供了丰富的组件库和用户界面,使得开发者可以创建出具有桌面应用程序般用户体验的Web应用。Struts2 则是基于MVC(Model-View-...
6. **树**(Tree):用于展示分层次的数据结构。 7. **表单**(Form):包含多个控件用于收集用户输入信息。 #### 五、总结 Extjs 作为一种强大的前端框架,不仅提供了丰富的 UI 组件,还支持 MVC 架构模式,有助...
在Flex中,这些可以通过自定义组件实现,例如,使用Tree或HierarchicalData类来构建树形结构,每个节点代表一个职位或部门,通过数据绑定将数据模型与视图关联起来。此外,图形化呈现可能利用了Graph或Canvas组件,...
1. **控件(Widgets)**:SWT 提供了各种原生控件,如按钮(Button)、文本框(Text)、列表(List)、表格(Table)、树(Tree)等。这些控件直接映射到操作系统底层的控件,因此在不同平台上表现一致。 2. **事件...