`
侯上校
  • 浏览: 225820 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Extjs 多选和单选下拉框

 
阅读更多
http://www.mhzg.net/a/20112/2011219130030.html

//单选下拉框
Boat.UI.SingleSelect = Ext.extend(Ext.form.ComboBox, {
    triggerAction: 'all',
    mode: 'local',
    editable: false,
    emptyText: '请选择...',
    displayField: 'text',
    valueField: 'value',
    /*
    @store
    */
    initComponent: function() {
        this.hiddenName = this.name;
        Boat.UI.SingleSelect.superclass.initComponent.call(this);
    },
    setValue: function(v) {
        if (Ext.type(v) == 'object') {
            v = v[this.valueField];
        }
        Boat.UI.SingleSelect.superclass.setValue.call(this, v);
    }
});
Ext.reg('select', Boat.UI.SingleSelect);
//多选下拉框
Boat.UI.MultiSelect = Ext.extend(Boat.UI.SingleSelect, {
    tpl: '<div class="multiselect"></div>',
    // private
    initList: function() {
        Boat.UI.MultiSelect.superclass.initList.call(this);
        this.initCheckBox();
    },
    // private
    initCheckBox: function() {
        var ct = this.innerList.first('.multiselect');
        this.items = new Ext.util.MixedCollection();
        var fn = function(r) {
            var c = new Ext.form.Checkbox({
                boxLabel: r.data[this.displayField],
                inputValue: r.data[this.valueField],
                renderTo: ct
            });
            this.items.add(c);
        };
        this.store.each(fn, this);
        this.on('collapse', this.onCollapse, this);
    },
    onCollapse: function() {
        var value = [];
        var fn = function(c) {
            if (c.getValue()) {
                value.push(c.el.dom.value);
            }
        };
        this.items.each(fn);
        this.setValue(value);
    },
    setValue: function(v) {
        if (!Ext.isArray(v)) { v = [v]; }
        this.hiddenField.value = v;
        Ext.form.ComboBox.superclass.setValue.call(this, this.getTexts(v));
        this.value = v;
    },
    getTexts: function(v) {
        var texts = [];
        var fn = function(r) {
            var rv = r.data[this.valueField];
            if (v.indexOf(rv) > -1) {
                texts.push(r.data[this.displayField]);
            }
        };
        this.store.each(fn, this);
        return texts.join();
    },
    afterExpand: function() {
        this.items.reset();
        if (!Ext.isArray(this.value) || this.value.length == 0) { return; }
        var v = this.value;
        this.items.each(function(item) {
            var rv = item.el.dom.value;
            if (v.indexOf(rv) > -1) {
                item.setValue(true);
            }
        });
    }
});
Ext.reg('multiselect', Boat.UI.MultiSelect);
CSS:
 
.multiselect .x-form-check-wrap{float:left;margin:3px;}
分享到:
评论

相关推荐

    extjs多选 下拉框扩展

    总结起来,"extjs多选 下拉框扩展"是为了满足ExtJS应用中多选功能的需求,通过对原生ComboBox组件进行扩展和定制,实现了带有复选框的多选下拉框。这个扩展可能包括了新的配置项、模板修改、事件处理、数据模型、...

    Extjs3.4.0版本 多选下拉框效果支持多选/全选/全不选

    这个功能增强了标准的单选下拉框,允许用户同时选择多个条目,通常通过复选框实现。在描述中提到的“全选/全不选”功能,是多选下拉框的一种高级特性,它提供了快速选择或取消所有选项的便利。 首先,我们来看看`...

    extjs多选下拉框

    下面将详细解释EXTJS多选下拉框的实现原理和相关知识点。 首先,EXTJS的ComboBox组件本身是单选的,但通过扩展和自定义,可以实现多选功能。`lovcombo.js`文件很可能包含了实现这一功能的代码,其中可能包括了对...

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    在ExtJS 4.x的ComboboxTree中,通过配置参数可以实现多选和单选模式。通常,单选可以通过设置`multiSelect: false`来实现,而多选则通过设置`multiSelect: true`。同时,还需要配置`mode`为`EXTJS4`特有的`EXTJS4`...

    Extjs3 多选下拉框LovCombo

    1. **多选功能**:与传统的单选下拉框不同,LovCombo允许用户同时选择多个选项,通过检查框或复选标记实现。 2. **动态加载**:数据通常从服务器异步加载,根据用户的输入过滤结果,这样可以减少页面的加载时间,并...

    extjs-Ext.ux.form.LovCombo下拉框

    标签中包含的“eztjs多选单选下拉框”可能是个拼写错误,实际上应该是EXTJS的多选和单选下拉框。EXTJS的`ComboBox`默认支持单选,而`Ext.ux.form.LovCombo`通过扩展实现了多选功能,允许用户在下拉列表中选择多个...

    extjs实现下拉框多选

    在ExtJS中,下拉框(ComboBox)是用户界面中常见的组件,通常用于单选操作。然而,通过扩展和定制,我们也可以实现下拉框的多选功能。在本篇中,我们将深入探讨如何在ExtJS中实现下拉框的多选功能。 首先,了解基本...

    ext多选下拉框(代码及例子)

    在EXTJS中, Combo(组合框)是一个常用的组件,它可以作为单选或多选的下拉框使用。本示例将详细讲解EXTJS中实现多选下拉框的代码及实践。 在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1....

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

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

    extjsCombo下拉框多选

    7. **样式调整**:为了区别于普通的单选下拉框,多选下拉框可能需要一些定制的CSS样式,以呈现选中项的视觉效果。 在实际应用中,可以根据项目需求对这个MultiCombox组件进行进一步的修改和优化。例如,增加搜索...

    Extjs4下拉多选扩展

    然而,标准的下拉框只支持单选模式,如果需要实现多选功能,就需要进行一定的扩展。本文将深入探讨如何在ExtJS 4中实现下拉多选扩展。 首先,理解基本的ExtJS 4 ComboBox工作原理。ComboBox由一个输入字段和一个...

    ext下拉多选组件multicombo

    这个组件扩展了EXTJS的原生下拉框(ComboBox)功能,增加了多选特性,使得用户可以在下拉菜单中选择多个选项。 EXTJS的ComboBox通常是一个单选下拉列表,用户只能从预定义的选项中选择一个。然而,"multicombo"组件...

    Ext combobox 下拉多选框带搜索功能

    Ext JS中的ComboBox是一个下拉列表组件,通常用于单选,但可以通过自定义扩展实现多选。默认情况下,ComboBox有一个输入框,用户可以输入文本进行搜索过滤,然后从下拉列表中选择结果。 实现多选功能,我们可以利用...

    Extjs4下拉菜单ComboBox中用Grid显示通用控件

    - `GridComboBox` 可以设置为单选或多选模式,根据业务需求选择合适的交互方式。 4. **配置与实现** - 创建 `GridComboBox` 需要配置 `store`(数据源)、`displayField`(显示字段)、`valueField`(值字段)等...

    extjs 常用控件的使用 table layout

    3. **Checkbox** 和 **Radio**:复选框和单选按钮,用于多选和单选操作。 4. **Button**:按钮组件,常用于触发操作或事件。 5. **DateField**:日期选择器,提供日期输入功能。 6. **GridPanel**:数据网格,用于...

    ExtJs下拉树

    在ExtJS中,下拉树(ComboBoxTree)是一种结合了下拉框和树结构的组件,它允许用户从一个展开的树形列表中选择值,而不是传统的单行文本输入或简单的下拉列表。这种组件在数据层级结构复杂且需要用户进行多级选择时...

    ExtJs组件类的对应表

    本文将详细介绍ExtJs中的组件类及其对应的功能,帮助读者更好地理解和运用这些组件。 #### 基本组件 1. **`button`** - 对应于`Ext.Button`类,是ExtJs中最基础的按钮组件,用于触发事件或执行某些操作。 2. **`...

    Extjs中文教程

    - 定义了如何选择表格中的行,包括单选、多选等模式。 - 可以通过配置`selModel`选项来指定。 - **Grid视图** - 视图负责渲染表格的实际内容。 - 可以自定义视图的滚动、加载等行为。 #### 二十、GridPanel...

    ExtJs xtype一览

    通过以上解析可以看出,ExtJs提供了丰富的组件库,涵盖了从基础UI元素到复杂的表格和表单处理等多个方面。这些`xtype`不仅简化了开发流程,还大大提高了Web应用的交互性和用户体验。开发者可以根据具体需求灵活选择...

Global site tag (gtag.js) - Google Analytics