`
lzh166
  • 浏览: 298867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ExtJS树控件,完成机构树的呈现

阅读更多

这里仅仅是一个树控件的展现而已,并没有做其他操作,其目的主要是熟悉使用ExtJS实现树结构数据的展现。里面的一些具体参数的含义参照文档,这里我就把一些需要增加或修改地方的代码贴出来:

组织机构实体类:

@Entity
@Table(name="T_Org")
public class Organization {
	
	@Id
	@GeneratedValue
	private Integer id;
	
	private String name;
	
	@Column(unique=true)
	private String sn;
	
	private String description;
	
	@ManyToOne
	@JoinColumn(name="pid")
	private Organization parent;
	
	//如果使用ExtJS,可以考虑不加载
	@OneToMany(mappedBy="parent")
	@LazyCollection(LazyCollectionOption.EXTRA)
	private Set<Organization> children;
	
	//在界面上显示的文本
	public String getText(){
		return name;
	}
	
	//是否是叶子节点
	public boolean getLeaf(){
		if(getChildren().size() == 0){
			return true;
		}
		return false;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSn() {
		return sn;
	}
	public void setSn(String sn) {
		this.sn = sn;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Organization getParent() {
		return parent;
	}
	public void setParent(Organization parent) {
		this.parent = parent;
	}
	public Set<Organization> getChildren() {
		return children;
	}
	public void setChildren(Set<Organization> children) {
		this.children = children;
	}
}

 下面是请求action类:

@Controller("orgAction")
@Scope("prototype")
public class OrgAction extends BaseAction implements ModelDriven{

	private Organization org;
	
	private int parentId;
	
	@Resource
	private OrgManager orgManager;
	
	//从界面上传递过来的参数
	private String node;
	
	//打开机构树
	public void execute(){
		
		int pid = 0;
		//首次加载node为空,则将异常忽略掉
		try {
			pid = Integer.parseInt(node);
		} catch (Exception e) {
		}
		
		PagerModel pm = orgManager.searchOrgs(pid);
		
		toJSON(pm.getDatas());
		
	}
	public Object getModel() {
		if(org == null){
			org = new Organization();
		}
		return org;
	}

	public Organization getOrg() {
		return org;
	}

	public void setOrg(Organization org) {
		this.org = org;
	}

	public int getParentId() {
		return parentId;
	}

	public void setParentId(int parentId) {
		this.parentId = parentId;
	}
	
}

 

下面贴出js文件:注意这里的nodeType: 'async',//异步请求,参数并未起作用,主要原因是由我们在实体类中设置了双向关联,hibernate加载数据时一块给加载了。

Ext.BLANK_IMAGE_URL = 'ext-3.1.1/resources/images/default/s.gif';//指定空白图片的位置,不指定会从网上查找
Ext.onReady(function(){
	Ext.QuickTips.init(); 
	
    var Tree = Ext.tree;

    var tree = new Tree.TreePanel({
        useArrows: true,
        autoScroll: true,
        animate: true,
        enableDD: true,
        containerScroll: true,
        border: false,
        rootVisible: false,//是否显示root
        // auto create TreeLoader
        dataUrl: 'org.action',

        root: {
            nodeType: 'async',//异步请求
            text: '机构信息',
            draggable: false,//是否可以拖放
            id: 'src'
        }
    });

    tree.on("click",
    	function(node,e){
    		alert("你点击的机构ID是:"+node.id);
    	}
    );
    
    // render the tree
    tree.render('orgtree');
    //tree.getRootNode().expand();	
});

 

页面:

<div id="orgtree"></div>

 下面来看看效果图吧:



 

  • 大小: 19.3 KB
分享到:
评论
4 楼 weijs 2010-07-22  
谢谢你的例子
3 楼 lzh166 2010-07-21  
tree.on("click",  
        function(node,e){  
            alert("你点击的机构ID是:"+node.id);  
        }  
    );  
2 楼 weijs 2010-07-19  
请问,你的node是怎么传到后台的呢?
前面的问题我解决了
1 楼 weijs 2010-07-13  
你好,为什么我按你的方法生成的树没有取得getText和getLeaf的值呢?
我的邮箱是weijs@foxmail.com
谢谢了

相关推荐

    extjs时间控件精确秒

    在EXTJS这个强大的JavaScript框架中,时间控件是开发者经常使用的组件之一,尤其在构建复杂的Web应用程序时。EXTJS的时间控件允许用户选择或输入时间,通常以小时、分钟和秒为单位,提供了用户友好的界面和丰富的...

    Extjs树(tree)控件

    详细说明了extjs中的树控件,正确无误的说明extjs树控件的强大之处

    extjs年份控件(只显示年,无月日时分秒)

    Extjs DateField控件 - 只选择年份(找了很久发现网上只有选择年月的控件,于是基于extjs年月控件设计了只选择年份的控件)

    ExtJS下拉列表树控件

    在ExtJS中,下拉列表树控件(ComboBox Tree)是常见的组件之一,它结合了下拉列表和树结构,提供了更丰富的用户界面。这个控件允许用户从一个层级化的数据结构中进行选择,非常适合于展示有层次关系的数据。 在创建...

    extjs网页控件开发

    在"extjs网页控件开发"中,我们主要关注的是使用ExtJS来创建高效的网页组件,如图表和多级联动下拉列表框。这些控件能够显著提升用户界面的交互性和用户体验。 首先,让我们深入探讨ExtJS中的图表控件。ExtJS提供了...

    EXTJS时间控件年月日时分秒

    在EXTJS中,时间控件是常见的交互元素,允许用户选择特定的时间,包括年、月、日、时、分和秒。这篇文档将深入探讨EXTJS中的时间控件及其使用方法。 首先,EXTJS时间控件的设计理念是为了提供用户友好的时间选择...

    extjs 树 搜索

    在EXTJS中,树形控件(Tree)是一种常见的数据展示方式,用于组织层次结构的数据。树形控件可以被广泛应用于文件系统、组织架构、菜单等场景。当我们需要在这些大量的层次数据中查找特定信息时,搜索功能就显得尤为...

    很好用的extjs年份控件

    自己新写的extjs年份控件,直接new Ext.ux.MyYear 即可使用

    extjs 微调控件,时间微调控件,微调,javascript 微调

    在ExtJS中,微调控件(Spinner)是一种用户界面组件,它允许用户通过点击向上或向下的箭头以微小增量增加或减少数值,常见于输入框旁边,提供一种方便的数值调整方式。这个控件在处理精确输入或者范围限制的数值时...

    Extjs4下拉树菜单ComboBoxTree支持单选和多选并且支持展开选中指定节点的通用控件

    在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...

    extjs ip控件

    extjs ip控件 extjs ip控件 extjs ip控件 extjs ip控件 extjs ip控件

    ExtJS时间控件、IP输入控件【控件】

    在这个名为"ExtJS时间控件、IP输入控件【控件】"的压缩包中,我们可以找到实现这两个特定功能的示例代码。 1. **ExtJS时间控件**:此控件允许用户方便地选择和输入时间。在ExtJS中,时间控件通常由`Ext.picker.Time...

    ExtJS4学习笔记十一 树控件的使用

    在本篇《ExtJS4学习笔记十一:树控件的使用》中,我们将深入探讨ExtJS框架中的树形控件(TreePanel),这是一种强大的UI组件,用于展示层次结构的数据。ExtJS4对树控件的功能进行了增强,使其更加灵活且易于使用。...

    ExtJs图片按钮控件

    ExtJs图片按钮控件是ExtJs框架中一种增强的按钮组件,它允许开发者在按钮上显示图片,以提供更丰富的用户界面。这个控件通常用于创建具有视觉吸引力的交互式UI元素,比如导航按钮或者操作按钮。下面我们将深入探讨...

    extjs年月选择控件

    extjs的年月选择控件,主要针对原有的extjs Datefield控件的基础上增加了插件

    extjs 时间控件

    - 使用`listeners`配置项可以监听控件的渲染事件,从而在渲染完成后应用自定义样式。 6. **国际化支持** ExtJS 支持多语言环境,包括时间格式的本地化。通过设置全局的`Ext.locale`或在时间控件中指定`locale`...

    ExtJs搜索控件、插件

    在ExtJS中,搜索控件和插件是提升用户体验、实现高效数据查找的关键元素。本篇将深入探讨这些知识点,以帮助你更好地理解和应用。 首先,我们要了解`SearchField.js`在这个上下文中的作用。通常,这是一个自定义...

    Extjs UI控件 for Asp.net3.5

    ExtJS UI控件是用于构建丰富、交互性强的Web应用程序的JavaScript库,它与ASP.NET 3.5结合使用,可以为开发人员提供强大的前端开发工具。在ASP.NET 3.5框架下,ExtJS控件能帮助开发出具有桌面应用般体验的网页应用。...

    ExtJs DataGridView控件实例

    在"ExtJs DataGridView控件实例"中,我们主要会探讨以下几个方面: 1. **ExtJs Grid组件**:ExtJs 的Grid组件是一个高度可定制的数据视图,能够显示大量的数据并提供分页、排序、过滤、编辑等功能。它通常与Store...

Global site tag (gtag.js) - Google Analytics