Ext 下拉树

ext js 下拉树 ext js 下拉树 真正可执行 包括引入的js和css 立即下载

首先要引入一个js  combotree.js放在文章最后面

var areaIdTree = new Ext.tree.TreeLoader({dataUrl:basePath+"/btnCaseListManagerAction.do?act=getAreaIdTree"})

var areaIdComboTree = new Ext.form.ComboBoxTree({
fieldLabel:"地域",
id:"areaId",
hiddenName:"areaIdHidden",
width:160,
tree:new Ext.tree.TreePanel({
root: new Ext.tree.AsyncTreeNode({
id:"95",
text:"宁夏回族自治区",
expanded:false,
leaf:false,
loader:areaIdTree
}),
rootVisible:true,
border: false,//不然会出现两个框
       listeners: {
           beforeload:function(n) {if (n) { this.getLoader().baseParams.id = n.attributes.id;}  }
       }
}),
   onSelect: function(cmb, node) {//选择的时候触发
        cmb.canCollapse = false;  //不关闭当前树
   },
})
areaIdComboTree.tree.on("checkchange",function(node,checked){
areaIdComboTree.canCollapse = false;//勾选后不关闭树panel
var text = node.text;//勾选节点中文名称
var id = node.id;
var textArray = new Array();
var idArray = new Array();
var nodes = areaIdComboTree.tree.getRootNode().childNodes;
for (var j = 0;j < nodes.length; j++){
var nodeChild = areaIdComboTree.tree.getRootNode().childNodes[j];
if(nodeChild.hasChildNodes()){
for(var i = 0;i < nodeChild.childNodes.length; i++){
if(nodeChild.childNodes[i].getUI().checkbox.checked){//判断叶子节点是否被勾上
textArray.push(nodeChild.childNodes[i].text);
idArray.push(nodeChild.childNodes[i].id);
}
}
}
}
areaIdComboTree.setValue(textArray.join());
areaIdValue = idArray.join();
},areaIdComboTree.tree)

在Action中 要把数据转为树的格式

public ActionForward getAreaIdTree(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response) throws Exception{
List<HashMap> list = dao.getAreaIdTree();
List<HashMap> treeList = getChildren(list);
JSONArray jsonArray = JSONArray.fromObject(treeList);
response.setCharacterEncoding("utf-8");
response.getWriter().print(jsonArray);
return null;
}


private List<HashMap> getChildren(List<HashMap> nodes) {
List<String> list = new ArrayList<String>();
List<HashMap> listTree = new ArrayList<HashMap>();
for (HashMap node : nodes) {
if(!list.contains((String)node.get("pid"))) {
list.add((String)node.get("pid"));
}
}
List trees[] = new ArrayList[list.size()];
for (int i = 0; i < trees.length; i++) {
trees[i] = new ArrayList();
}
for (HashMap node : nodes) {
if(!list.contains((String)node.get("id"))) {
node.put("leaf", "true");
node.put("checked", false);
}
if(node.get("pid").equals("1")){
node.put("expanded", "true");
}
for(int i = 0;i < list.size();i++) {
if(list.get(i).equals((String)node.get("pid"))) {
trees[i].add(node);
}
if(list.get(i).equals((String)node.get("id"))) {
node.put("children", trees[i]);
}
}
if(((String)node.get("pid")).equals("95")) {//根节点的pid是什么equals就写什么
node.put("expanded", "true");
listTree.add(node);
}
}
return listTree;
}


combotree.js


Ext.form.ComboBoxTree = Ext.extend(Ext.form.ComboBox, {
        store: new Ext.data.SimpleStore({ fields: [], data: [[]] }),
        editable: false,
        shadow: false,
        mode: 'local',
        triggerAction: 'all',
        selectedClass: '',
        onSelect: null,
        canCollapse: true,
        constructor: function(_cfg) {
            if (_cfg == null) {
                _cfg = {};
            }
            Ext.apply(this, _cfg);
            this.treerenderid = Ext.id();
            this.tpl = String.format('<tpl for="."><div style="height:200px"><div id="ext-combobox-tree{0}"></div></div></tpl>', this.treerenderid);
            Ext.form.ComboBoxTree.superclass.constructor.apply(this, arguments);
            if (this.tree) {
                var cmb = this;
                this.tree.on('click', function(node) {
                    cmb.canCollapse = true;
                    if (Ext.isFunction(cmb.onSelect)) {
                        cmb.onSelect(cmb, node);
                    } else {
                        cmb.setValue(node.text);
                        if (cmb.hiddenField) {
                            cmb.hiddenField.value = node.id;
                        }
                    } 
                  
                   // cmb.collapse();
                });
                


                //以下事件,让combobox能正常关闭
                //this.tree.on('expandnode', function() { cmb.canCollapse = true; });
                this.tree.on('beforeload', function() { cmb.canCollapse = false; });
                this.tree.on('beforeexpandnode', function() { cmb.canCollapse = false; });
                this.tree.on('beforecollapsenode', function() { cmb.canCollapse = false; });
              /*  this.tree.on('checkchange', function() { 
                cmb.canCollapse = false;
                });*/
                
            }
            this.on('expand', this.expandHandler, this);
            this.on('collapse', this.collapseHandler, this);
        },
        expandHandler: function expand() {
            this.canCollapse = true;
            if (this.tree) {
                this.tree.render('ext-combobox-tree' + this.treerenderid);
                this.canCollapse = true;          
                this.tree.getRootNode().expand();
                
            }
        },
        collapseHandler: function collapse() {
            if (!this.canCollapse) {
                this.expand();
            }
            
        }
    
    });
    Ext.reg('combotree', Ext.form.ComboBoxTree);

Ext下拉列表树 Ext下拉列表树,任何版本都可使用,只要下载即可使用。 立即下载

相关推荐

Ext下拉树、下拉表格

项目是myeclipse的web项目,导入项目即可,自己添加ext的js和css文件,资源中没有加入ext的基础文件

ext 下拉树

效果如下:                                    一、areaTree.js /** * 下拉树ComboBoxTree * * @extend Ext.form.ComboBox * @xtype 'combotree' */ ComboBoxTree = Ext.extend(Ext.form.ComboBox, { /**

u013365569的专栏 1006

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 542

Extjs实现下拉树

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34023982的博客 395

国产SR8201F以太网PHY芯片调试避坑指南:从机贴失败到杜邦线救场的实战记录

本文详细介绍了国产SR8201F以太网PHY芯片的调试避坑指南,涵盖硬件设计、PCB布局、SMT贴片及软件驱动等关键环节。通过实战案例解析,帮助工程师解决MII/RMII接口配置、电源设计、信号完整性等典型问题,提升以太网通信稳定性与EMC性能。

c6d7e8f9g的博客 1218

利用wolcmd.exe批处理执行远程唤醒

代码如下: @echo off cls :check if exist wolcmd.exe goto targetmac echo 缺少wolcmd.exe echo. goto end :targetmac cls echo -------------------------------------------------------- echo 目标主机PC-01地址:40235678A...

Chriseo的博客 6951

自定义ExtJS控件之下拉树和下拉表格

简介 在Ext官方的例子中只有下拉列表控件,但是在实际业务中只有下拉列表无法满足需求的,像下拉树和下拉表格都是很常见的控件,对于刚使用Ext的人来说,自定义一个控件好难,其实多读官方的源码有些事情就不会那么难了。下面是下拉树的代码: Ext.define('ComboTreeBox',{ extend : 'Ext.form.field.ComboBox', multiSelect...

923723914 590

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2335

EXT2.0 下拉树例子

看了很多关于EXT下拉树的实现, 发现很多例子都是对EXT原有的类进行扩展, 而且都发现用起来很费劲 在这里,本人实现的EXT下拉树是直接使用 Ext.form.ComboBox + Ext.tree.TreePanel, 将两者结合起来,不需要额外的扩展效果图可见附件一JS代码如下:Js代码 var comboxWithTree = new E

lee576的专栏 2981

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,从DH参数输入到3D可视化全流程解析。通过正运动学验证、逆运动学求解和交互控制等实战技巧,帮助工程师快速掌握机械臂建模核心方法,并提供完整代码示例解决常见问题。

weixin_27372101的博客 396

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

文章目录准备一、使用代码生成器1.数据库2.导入表并生成代码二、导入代码文件1.新建一个模块2.导入zip代码文件3.模块环境配置添加菜单和访问地址总结 准备 前提要把系统启动起来,部分教程可以参考这边文章若依框架RuoYi前后端分离项目导入IDEA及运行启动 但是完全参考这篇文章还是不能把项目启动起来,因为这篇文章没有说明数据库。 我是用的是本地数据库,采用xampp+Navicat的组合来部署和访问数据库。打开Navicat,连接并创建数据库ry-vue并导入数据脚本ry_20191008.sql,q

dream_coke的博客 1万+

ext combox 下拉树

一个下拉树的简单实现,ext2.2 var comboxWithTree = new Ext.form.ComboBox({ hiddenName:'consCode',fieldLabel:'建设单位', displayField:'code',valueField:'value',mode:'local', store:new Ext.data.SimpleSto...

清风拂面 212

QT实现ftp服务器(附完整源码)

QT实现ftp服务器(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1784

EXT2.0 下拉树例子(超简单)

导读:   相关文章: X   ext-2.0扩展树形下拉框(代码及演示)   Ext 的表单(Form)   Ext CheckTreeNode Example更多相关推荐   看了很多关于EXT下拉树的实现, 发现很多例子都是对EXT原有的类进行扩展, 而且都发现用起来很费劲      在这里,本人实现的EXT下拉树是直接使用 Ext.form.ComboBox + Ext.tree.

浮白 3459

[QMT和ptrade量化交易小白入门]-125、菜场大妈加上四大现金行业指数风控,最大回撤从22%减少了一半

群里面有人建议,在菜场大妈策略的基础上,加入申万的行业指数(银行,钢铁,有色,煤炭)测算其宽度,当这四大行业其中有一个高就会清仓(用来控制回撤)。这背后的逻辑是,在存量资金博弈的市场环境中,资金总量相对固定,当银行、钢铁、有色、煤炭等大市值周期行业因基本面改善(如涨价、政策催化)或避险需求而走强时,会吸引大量资金涌入,导致其他板块(尤其是小市值股票)面临流动性虹吸。经过回测,对比上一个版本发现确实是可以降低一半的回撤,最大回撤从22.3%降到了11.4%,而且有很多时间是空仓等待。

木头大左的博客 242

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Ext下拉树组件

http://www.2cto.com/kf/201206/135007.html   /** *下拉树类(Jelly) */ Ext.define('Redm.commons.TreeCombox', {     extend: 'Ext.form.field.Picker',     xtype: 'treecombox',     triggerCls: Ext.baseCSSPrefi...

zhenyaoMilenfan的专栏 329

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ext2下拉树选项框comboxWithTree(支持异步加载子节点)

支持单选、异步加载子节点(当然一下子拼接好全部节点的json也是绝对没问题的),要支持多选则需要自行设置,(已测试通过)浏览器兼容ie8、谷歌、FF。

生活没了创意,那跟咸蛋有什么区别 1844

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【叨、校长】Ext 下拉树插件_ComboTree_xz

本插件继承于ComboBox!通俗易懂、老少皆宜、不论男女!---叨、校长 由于网上找的插件大多都有bug,特别自己重写了一个,简单实用! 详细说明,与使用范例请看插件注释!   /** * @description 基于Ext3.4版本实现的(其他版本或许支持,未测!)一个多选下拉树插件! * 实现功能:1、多选节点! * 2、自动选中下拉框中已有的节点...

叨、校长灬 197

Ext Combobox 动态下拉树实现

在最近的一个项目中,想利用Ext combobox实现一个动态的下拉树,无奈官方中也没有例子,网上很多例子也是坑爹的,, 决定自已修改 然后实现一个动态的下拉树,废话少说 ,看代码: Ext.ns('Boat.UI'); // 树形下拉框 Boat.UI.TreeCombox = Ext.extend(Ext.form.ComboBox, {             store :

Aring专注网络安全 1015

自定义ExtJS控件之Ext下拉树和Ext下拉表格

简介在Ext官方的例子中只有下拉列表控件,但是在实际业务中只有下拉列表无法满足需求的,像下拉树和下拉表格都是很常见的控件,对于刚使用Ext的人来说,自定义一个控件好难,其实多读官方的源码有些事情就不会那么难了。下面是下拉树的代码:Ext.define('ComboTreeBox',{ extend : 'Ext.form.field.ComboBox', multiSelect : tru

洗尽铅华 1万+

Ext.form.ComboBoxTree 下拉树 下拉多选树

源代码:  2012年7月27日更新 修复了选择后通过getValue无法获取值的bug. /** * @author 哈哈的快 QQ:20151481 * @link http://blog.youkuaiyun.com/hahadekuai/article/details/7769093 * @version 1.4 * @date 2012-7-27 9:10  */ if ('fun

hahadekuai的专栏 1万+

ext combobox下拉树的实现

项目需要,对ext的bombobox实现了子类,来展示下拉列表树。哪有不好的,网友多多指正 [code="java"] /* * ext-3.2.1版本点击树的节点时,树自动隐藏,可能是这个版本的一个bug,下面是覆盖一个方法,解决此bug */ Ext.override(Ext.form.ComboBox, { onViewClick : function(...

libin7758521的专栏 167
上一篇: ext radio 获取值
下一篇: ext 更改行颜色
zy_crazy_code
博客等级 码龄12年 290粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值