`
驿马回家
  • 浏览: 9717 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Ext做的弹出树

    博客分类:
  • Ext
阅读更多
因为项目需要做一个行政区划弹出树,借此机会又学习使用了一下ext。
此为用ext.window作为弹出窗口,内放置ext.treepanel显示行政区划树,点击确定按钮返回所选节点的id,code,name。
此为项目功能完成后的精简版,个人觉得从这里开始很容易做扩展。
<script type="text/javascript">
  var win ;
  var selid;
  var selcode;
  var selname;
  
  Ext.onReady(function(){
  
	var dataRoot = new Ext.tree.AsyncTreeNode({
		id: '-1',
		text: '行政区划树',
		expanded: true
    });
    
    var dataTreeLoader = new Ext.tree.TreeLoader({dataUrl: '${ctx}/hp/baseinfo/listAllArea.action'});
    dataTreeLoader.on("beforeload", function(treeLoader, node) {
 		//loader需要传递的参数 
		treeLoader.baseParams.nodeid= node.id;   
		Ext.get(document.body).mask();
    }, this);
    dataTreeLoader.on("load", function(treeLoader, node) {
		Ext.get(document.body).unmask();        
    }, this);
    
    var tree=new Ext.tree.TreePanel({
		el:'treediv',
	    animate : true, 
	    height : 260, 
	    width : 240, 
	    autoScroll : true, 
	    containerScroll : true, 
	    lines : true, 
	    root: dataRoot,
	    loader: dataTreeLoader,
	    rootVisible: false,
	    listeners : { 
		     'click' : function(node, event) { 
		   		 // 将节点的信息保存在变量中
				selid = node.id;
				selcode = node.attributes.code;
				selname = node.attributes.name;
			},
			'dblclick':function(node,event){
				//双击事件
	        } 
 	   } 
	});
    tree.render();
    tree.expandAll();//展开所有节点

	var button = Ext.get('btnChooseArea');//获取选择按钮
	if(button!=null){//如果按钮不为null,为按钮增加点击事件,显示win
	    button.on('click', function(){
	        if(!win){
	            win = new Ext.Window({ 
				    plain : true, 
				    layout : 'form', 
				    resizable : true, // 改变大小 
				    draggable : true, // 不允许拖动 
				    closeAction : 'hide',// 可被关闭 close or hide 
				    modal : true, // 模态窗口 
				    width : 260, 
				    height : 350, 
				    title : '行政区划', 
				    items : [tree], //包含tree
				    buttonAlign : 'right', 
				    loadMask : true, 
				    buttons : [{ 
				       xtype : 'button', 
				       align : 'right', 
				       text : '确定', 
				       handler : function() { 
				       		//将变量中的值赋值到控件上
							document.getElementById("districtid").value=selid;
							document.getElementById("discode").value=selcode;
							document.getElementById("districtname").value=selname;
	        				win.hide(); 
						} 
					}, { 
				       xtype : 'button', 
				       text : '取消', 
				       handler : function() { 
							win.hide(); 
				       } 
					}] 
				});
	        }
	        win.setPosition(this.getXY());
	        win.show(this);
		});
	}
  });
</script>
<s:hidden id="districtid" name="model.area.id"></s:hidden>
<s:hidden id="discode" name="model.discode"></s:hidden>
<s:textfield id="districtname" name="model.districtname" cssStyle="width:400px" readonly="true"></s:textfield> 
<input type="button" id="btnChooseArea" value="选择"/>
<div id="treediv"></div>



	private List<Map<String, Object>> allNodes = new ArrayList<Map<String, Object>>();
	
	public List<Map<String, Object>> getAllNodes() {
		return allNodes;
	}

	public void setAllNodes(List<Map<String, Object>> allNodes) {
		this.allNodes = allNodes;
	}
	//通过选择的节点遍历装载子节点
	public String doTreeAllNodes() throws Exception {
		if (nodeid.equalsIgnoreCase("-1")) {
			nodeid=null;
		} 
		//得到子节点集合
		List<Area> childrenList = ServiceFactory.getBean(AreaDAO.class)
				.queryByPropertyLogic("parent.id", nodeid,
						"seq");
		for (Area child : childrenList) {
			Map<String, Object> m = new HashMap<String, Object>();
			m.put("id", child.getId());
			m.put("text", child.getName());
			//code和name不是extnode的基础属性,会被放到node.attributes里
			m.put("code", child.getCode());
			m.put("name", child.getName());
			//是否叶子节点
			if (child.getChildren().size() == 0)
				m.put("leaf", true);
			else
				m.put("leaf", false);
			//是否展开
			if (this.isExpanded)
				m.put("expanded", true);
			allNodes.add(m);
		}
		return SUCCESS;
	}
}


<action name="listAllArea"  method="doTreeAllNodes"
            class="com.jdgm.hp.web.action.baseinfo.family.AreaTreeAction">
      <result type="json">
            <param name="root">allNodes</param>
      </result>
</action>
0
2
分享到:
评论
2 楼 驿马回家 2012-07-05  
谢谢 学习了解下。
1 楼 xiaokang1582830 2012-07-04  
老实说我个人不提倡EXT,开发成本太大,风险比较高!维护困难,建议去看看google的GWT框架,用java代码实现前台界面..

相关推荐

    ext实例 左边是 tree 右边是grid 双击grid弹出form修改

    本实例“ext实例 左边是 tree 右边是grid 双击grid弹出form修改”是针对初学者的一个宝贵资源,它演示了如何将这些组件结合起来,实现交互式的数据操作。 1. **树形控件(Tree)**:在左边展示数据结构,通常用于...

    Ext 2.0 树形机构

    Ext2.0不仅仅实现了复选框的树形菜单,而且使得在选中某个节点时,如果有子节点,那么就能够将所有的字节点全部选中,当然你也...同时,为了增加更好的效果,在本例中也实现了选中某个复选框节点后右键弹出菜单的操作。

    ext 关于树目录开发使用

    ### 关于 Ext.js 中树目录开发使用的关键知识点 在现代 Web 开发中,Ext.js 是一个非常流行的 JavaScript 框架,它提供了丰富的 UI 组件和功能强大的数据处理能力。本文将详细介绍 Ext.js 中关于树目录开发使用的...

    ext.net 中树加载及实现方式,初学者可以参考

    在`PageManage.aspx.cs`中,你可以监听这些事件并编写相应逻辑,比如点击节点后弹出详情窗口或者展开节点前加载子节点数据。 6. **异步加载实现**:在EXT.NET中,`TreePanel`的`AutoLoad`属性设置为`false`可禁用...

    深入浅出Ext JS (含源代码非完整版)

    全书由一个可以引领读者快速入门的“Hello World”示例开篇,紧接着对Ext JS的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后一个...

    EXT2.0中文教程

    5.4. 让弹出窗口,显示我们想要的东东,比如表格 5.4.1. 2.0的弹出表格哦 5.4.2. 向2.0的window里加表格 5.4.3. 1.x里的叫做BasicDialog 5.4.4. 把form放进对话框里 6. 奔腾吧!让不同的浏览器里显示一样的布局。 ...

    EXT教程EXT用大量的实例演示Ext实例

    Ext提供了多种弹出窗口组件,如MessageBox等,这些组件可自定义各种动画效果和布局,甚至可以在弹出窗口中嵌入表格和表单。Ext JS对布局的处理很灵活,可以轻松实现不同浏览器中的统一布局效果。其中BorderLayout是...

    Ext 开发指南 学习资料

    5.4. 让弹出窗口,显示我们想要的东东,比如表格 5.4.1. 2.0的弹出表格哦 5.4.2. 向window里加表格 5.4.3. 把form放进对话框里 6. 奔腾吧!让不同的浏览器里显示一样的布局。 6.1. 有了它,我们就可以摆脱那些自称ui...

    ext UI效果模板

    4. 导航和布局:如选项卡面板、 accordion布局、浮动窗口、弹出对话框等,帮助构建层次分明的页面结构。 5. 图标和图像:EXT内置了丰富的图标库,可以轻松美化界面。 6. 树形视图:用于展现层级关系的数据,支持展开...

    ext做动态的数

    代码中对加载结果进行了权限检查,如果发现返回的数据不符合预期,则弹出提示窗口,告知用户没有相应权限。这种权限控制机制可以有效防止非法访问,提高系统的安全性。 #### 5. 树节点操作 代码中还包含了对树节点...

    Ext模拟Windows桌面

    Ext JS的通知组件可以用来创建浮动提示或者弹出式对话框,提供实时反馈。 7. **文件管理器**:虽然不是所有模拟桌面都会包含,但可以使用Ext JS的GridPanel和TreePanel组件来创建一个类似于Windows资源管理器的界面...

    深入浅出Ext.JS (7)

    全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...

    ext中文帮助文档最终版

    6. **窗口和对话框**:Window组件提供模态和非模态窗口,可以用于创建弹出对话框。Dialog组件则提供了更多的交互功能,如确认、警告和输入对话框。 7. **表单组件**:EXT 2.0提供了多种表单字段,如文本框、密码框...

    深入浅出Ext.JS (6)

    全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...

    深入浅出Ext.JS (4)

    全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...

    ext2.0(jsp标签)

    它提供了一套完整的组件化、可定制的UI控件,包括树形视图、菜单、弹出式菜单等,使得开发者能够轻松创建具有专业外观和丰富交互功能的Web应用。EXT 2.0在设计时注重易用性和可扩展性,允许开发者通过简单的配置和...

    Ext.Net 1.3 Source code

    8. **工具提示与弹出窗口**:Ext.Net提供了丰富的提示和弹出窗口组件,如Tip、Window和MessageBox,方便展示额外信息或进行用户确认操作。 9. **性能优化**:通过压缩、合并脚本和CSS,以及延迟加载等技术,Ext.Net...

    深入浅出Ext JS(第2版) 随书光盘提供的书中实例

    6. **对话框和窗口**:包含弹出框、提示框和自定义窗口的创建,以及如何实现拖放和大小调整。 7. **菜单和工具栏**:介绍如何构建动态菜单和工具栏,提供上下文敏感的功能选项。 8. **Ajax和远程操作**:讲解如何...

    Ext组件描述,各个组件含义

    - **主要用途**:用于显示弹出窗口、模态对话框等。 **2.15 Toolbar (Ext.Toolbar)** - **xtype**: `toolbar` - **功能描述**:Toolbar 是一个包含按钮、文本框等控件的工具栏。 - **主要用途**:为用户提供快速...

    Ext 中文帮助文档

    7. **Window和Dialog**:提供弹出式界面,如对话框和窗口,支持拖放、最大化、最小化等操作,可以嵌入任何组件。 8. **Form组件**:包括各种表单元素,如文本框、复选框、下拉列表等,支持表单验证和数据提交。 9....

Global site tag (gtag.js) - Google Analytics