Extjs comboboxtree

Extjs5.1版本,由于版本之间的差异过大,导致3.3上的ComboTree组件在5.1上用不了。虽说在网上能找到一些可用的ComboboxTree组件,但是功能都不能满足我们的需求,于是自己重新写一个。主要实现的功能如下:1、单选/多选模式;2、节点的选择方式:    2.1、all:所有结点都
摘要由CSDN通过智能技术生成


Extjs5.1版本,由于版本之间的差异过大,导致3.2上的ComboTree组件在5.1上用不了。
虽说在网上能找到一些可用的ComboboxTree组件,但是功能都不能满足我们的需求,于是自己重新写一个。

主要实现的功能如下:
1、单选/多选模式;
2、节点的选择方式:
    2.1、all:所有结点都可选中;
    2.2、exceptRoot:除根结点,其它结点都可选(默认);
    2.3、folder:只有目录(非叶子和非根结点)可选;
    2.4、leaf:只有叶子结点可选
    2.5、不设置selectModel或者乱设置:所有节点不带check;只能单选
 
来几张效果图:


/**
 * Created by TNT on 2014/12/26.
 */
 
Ext.define("Ext.ux.ComboboxTree", {
    extend: "Ext.form.field.Picker",
    alias: "widget.comboboxtree",
    requires: ["Ext.tree.Panel"],
    config:{
        submitValue : ''//用于存放id
    },
    initComponent: function () {
        var self = this;
        Ext.apply(self, {
            fieldLabel: self.fieldLabel,
            labelWidth: self.labelWidth
        });
        self.callParent();
    },
    clearValue : function() {
        var me = this;
        var picker = me.getPicker();
        var root = picker.getRootNode();
        root.cascadeBy(function(node){
            if(node.get('checked')!= null){
                node.set('checked', false);
            }
        });
        me.setSubmitValue("");
        me.setValue("");
    },
    bindValue : function(value, submitValue) {
        var me = this;
        var picker = me.getPicker();
        var root = picker.getRootNode();
        var ids = submitValue.split(";");

        root.cascadeBy(function(node){
            if(node.get('checked')!= null){
                node.set('checked', false);
                for (var i = 0; i < ids.length; i++){
                    if(node.get('id') == ids[i]){
                        node.set('checked', true);
                    }
                }
            }
        });

        me.setSubmitValue(submitValue);
        me.se
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值