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应用中多选功能的需求,通过对原生ComboBox组件进行扩展和定制,实现了带有复选框的多选下拉框。这个扩展可能包括了新的配置项、模板修改、事件处理、数据模型、...
这个功能增强了标准的单选下拉框,允许用户同时选择多个条目,通常通过复选框实现。在描述中提到的“全选/全不选”功能,是多选下拉框的一种高级特性,它提供了快速选择或取消所有选项的便利。 首先,我们来看看`...
下面将详细解释EXTJS多选下拉框的实现原理和相关知识点。 首先,EXTJS的ComboBox组件本身是单选的,但通过扩展和自定义,可以实现多选功能。`lovcombo.js`文件很可能包含了实现这一功能的代码,其中可能包括了对...
在ExtJS 4.x的ComboboxTree中,通过配置参数可以实现多选和单选模式。通常,单选可以通过设置`multiSelect: false`来实现,而多选则通过设置`multiSelect: true`。同时,还需要配置`mode`为`EXTJS4`特有的`EXTJS4`...
1. **多选功能**:与传统的单选下拉框不同,LovCombo允许用户同时选择多个选项,通过检查框或复选标记实现。 2. **动态加载**:数据通常从服务器异步加载,根据用户的输入过滤结果,这样可以减少页面的加载时间,并...
标签中包含的“eztjs多选单选下拉框”可能是个拼写错误,实际上应该是EXTJS的多选和单选下拉框。EXTJS的`ComboBox`默认支持单选,而`Ext.ux.form.LovCombo`通过扩展实现了多选功能,允许用户在下拉列表中选择多个...
在ExtJS中,下拉框(ComboBox)是用户界面中常见的组件,通常用于单选操作。然而,通过扩展和定制,我们也可以实现下拉框的多选功能。在本篇中,我们将深入探讨如何在ExtJS中实现下拉框的多选功能。 首先,了解基本...
在EXTJS中, Combo(组合框)是一个常用的组件,它可以作为单选或多选的下拉框使用。本示例将详细讲解EXTJS中实现多选下拉框的代码及实践。 在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1....
在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...
7. **样式调整**:为了区别于普通的单选下拉框,多选下拉框可能需要一些定制的CSS样式,以呈现选中项的视觉效果。 在实际应用中,可以根据项目需求对这个MultiCombox组件进行进一步的修改和优化。例如,增加搜索...
然而,标准的下拉框只支持单选模式,如果需要实现多选功能,就需要进行一定的扩展。本文将深入探讨如何在ExtJS 4中实现下拉多选扩展。 首先,理解基本的ExtJS 4 ComboBox工作原理。ComboBox由一个输入字段和一个...
这个组件扩展了EXTJS的原生下拉框(ComboBox)功能,增加了多选特性,使得用户可以在下拉菜单中选择多个选项。 EXTJS的ComboBox通常是一个单选下拉列表,用户只能从预定义的选项中选择一个。然而,"multicombo"组件...
Ext JS中的ComboBox是一个下拉列表组件,通常用于单选,但可以通过自定义扩展实现多选。默认情况下,ComboBox有一个输入框,用户可以输入文本进行搜索过滤,然后从下拉列表中选择结果。 实现多选功能,我们可以利用...
- `GridComboBox` 可以设置为单选或多选模式,根据业务需求选择合适的交互方式。 4. **配置与实现** - 创建 `GridComboBox` 需要配置 `store`(数据源)、`displayField`(显示字段)、`valueField`(值字段)等...
3. **Checkbox** 和 **Radio**:复选框和单选按钮,用于多选和单选操作。 4. **Button**:按钮组件,常用于触发操作或事件。 5. **DateField**:日期选择器,提供日期输入功能。 6. **GridPanel**:数据网格,用于...
在ExtJS中,下拉树(ComboBoxTree)是一种结合了下拉框和树结构的组件,它允许用户从一个展开的树形列表中选择值,而不是传统的单行文本输入或简单的下拉列表。这种组件在数据层级结构复杂且需要用户进行多级选择时...
本文将详细介绍ExtJs中的组件类及其对应的功能,帮助读者更好地理解和运用这些组件。 #### 基本组件 1. **`button`** - 对应于`Ext.Button`类,是ExtJs中最基础的按钮组件,用于触发事件或执行某些操作。 2. **`...
- 定义了如何选择表格中的行,包括单选、多选等模式。 - 可以通过配置`selModel`选项来指定。 - **Grid视图** - 视图负责渲染表格的实际内容。 - 可以自定义视图的滚动、加载等行为。 #### 二十、GridPanel...
通过以上解析可以看出,ExtJs提供了丰富的组件库,涵盖了从基础UI元素到复杂的表格和表单处理等多个方面。这些`xtype`不仅简化了开发流程,还大大提高了Web应用的交互性和用户体验。开发者可以根据具体需求灵活选择...