因为项目需要做一个行政区划弹出树,借此机会又学习使用了一下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>
分享到:
相关推荐
本实例“ext实例 左边是 tree 右边是grid 双击grid弹出form修改”是针对初学者的一个宝贵资源,它演示了如何将这些组件结合起来,实现交互式的数据操作。 1. **树形控件(Tree)**:在左边展示数据结构,通常用于...
Ext2.0不仅仅实现了复选框的树形菜单,而且使得在选中某个节点时,如果有子节点,那么就能够将所有的字节点全部选中,当然你也...同时,为了增加更好的效果,在本例中也实现了选中某个复选框节点后右键弹出菜单的操作。
### 关于 Ext.js 中树目录开发使用的关键知识点 在现代 Web 开发中,Ext.js 是一个非常流行的 JavaScript 框架,它提供了丰富的 UI 组件和功能强大的数据处理能力。本文将详细介绍 Ext.js 中关于树目录开发使用的...
在`PageManage.aspx.cs`中,你可以监听这些事件并编写相应逻辑,比如点击节点后弹出详情窗口或者展开节点前加载子节点数据。 6. **异步加载实现**:在EXT.NET中,`TreePanel`的`AutoLoad`属性设置为`false`可禁用...
全书由一个可以引领读者快速入门的“Hello World”示例开篇,紧接着对Ext JS的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后一个...
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提供了多种弹出窗口组件,如MessageBox等,这些组件可自定义各种动画效果和布局,甚至可以在弹出窗口中嵌入表格和表单。Ext JS对布局的处理很灵活,可以轻松实现不同浏览器中的统一布局效果。其中BorderLayout是...
5.4. 让弹出窗口,显示我们想要的东东,比如表格 5.4.1. 2.0的弹出表格哦 5.4.2. 向window里加表格 5.4.3. 把form放进对话框里 6. 奔腾吧!让不同的浏览器里显示一样的布局。 6.1. 有了它,我们就可以摆脱那些自称ui...
4. 导航和布局:如选项卡面板、 accordion布局、浮动窗口、弹出对话框等,帮助构建层次分明的页面结构。 5. 图标和图像:EXT内置了丰富的图标库,可以轻松美化界面。 6. 树形视图:用于展现层级关系的数据,支持展开...
代码中对加载结果进行了权限检查,如果发现返回的数据不符合预期,则弹出提示窗口,告知用户没有相应权限。这种权限控制机制可以有效防止非法访问,提高系统的安全性。 #### 5. 树节点操作 代码中还包含了对树节点...
Ext JS的通知组件可以用来创建浮动提示或者弹出式对话框,提供实时反馈。 7. **文件管理器**:虽然不是所有模拟桌面都会包含,但可以使用Ext JS的GridPanel和TreePanel组件来创建一个类似于Windows资源管理器的界面...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
6. **窗口和对话框**:Window组件提供模态和非模态窗口,可以用于创建弹出对话框。Dialog组件则提供了更多的交互功能,如确认、警告和输入对话框。 7. **表单组件**:EXT 2.0提供了多种表单字段,如文本框、密码框...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
它提供了一套完整的组件化、可定制的UI控件,包括树形视图、菜单、弹出式菜单等,使得开发者能够轻松创建具有专业外观和丰富交互功能的Web应用。EXT 2.0在设计时注重易用性和可扩展性,允许开发者通过简单的配置和...
8. **工具提示与弹出窗口**:Ext.Net提供了丰富的提示和弹出窗口组件,如Tip、Window和MessageBox,方便展示额外信息或进行用户确认操作。 9. **性能优化**:通过压缩、合并脚本和CSS,以及延迟加载等技术,Ext.Net...
6. **对话框和窗口**:包含弹出框、提示框和自定义窗口的创建,以及如何实现拖放和大小调整。 7. **菜单和工具栏**:介绍如何构建动态菜单和工具栏,提供上下文敏感的功能选项。 8. **Ajax和远程操作**:讲解如何...
- **主要用途**:用于显示弹出窗口、模态对话框等。 **2.15 Toolbar (Ext.Toolbar)** - **xtype**: `toolbar` - **功能描述**:Toolbar 是一个包含按钮、文本框等控件的工具栏。 - **主要用途**:为用户提供快速...
7. **Window和Dialog**:提供弹出式界面,如对话框和窗口,支持拖放、最大化、最小化等操作,可以嵌入任何组件。 8. **Form组件**:包括各种表单元素,如文本框、复选框、下拉列表等,支持表单验证和数据提交。 9....