如下LovCombo.js ////////代码直接考过去用就行了
f('function' !== typeof RegExp.escape) {
RegExp.escape = function(s) {
if('string' !== typeof s) {
return s;
}
return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
};
}
// create namespace
Ext.ns('Ext.ux.form');
Ext.ux.form.LovCombo = Ext.extend(Ext.form.ComboBox, {
checkField:'checked'
,separator:','
,initComponent:function() {
// template with checkbox
if(!this.tpl) {
this.tpl =
'<tpl for=".">'
+'<div class="x-combo-list-item">'
+'<img src="' + Ext.BLANK_IMAGE_URL + '" '
+'class="ux-lovcombo-icon ux-lovcombo-icon-'
+'{[values.' + this.checkField + '?"checked":"unchecked"' + ']}">'
+'<div class="ux-lovcombo-item-text">{' + (this.displayField || 'text' )+ '}</div>'
+'</div>'
+'</tpl>'
;
}
// call parent
Ext.ux.form.LovCombo.superclass.initComponent.apply(this, arguments);
// install internal event handlers
this.on({
scope:this
,beforequery:this.onBeforeQuery
,blur:this.onRealBlur
});
// remove selection from input field
this.onLoad = this.onLoad.createSequence(function() {
if(this.el) {
var v = this.el.dom.value;
this.el.dom.value = '';
this.el.dom.value = v;
}
});
}
,initEvents:function() {
Ext.ux.form.LovCombo.superclass.initEvents.apply(this, arguments);
this.keyNav.tab = false;
}
,clearValue:function() {
this.value = '';
this.setRawValue(this.value);
this.store.clearFilter();
this.store.each(function(r) {
r.set(this.checkField, false);
}, this);
if(this.hiddenField) {
this.hiddenField.value = '';
}
this.applyEmptyText();
}
,getCheckedDisplay:function() {
var re = new RegExp(this.separator, "g");
return this.getCheckedValue(this.displayField).replace(re, this.separator + ' ');
}
,getCheckedValue:function(field) {
field = field || this.valueField;
var c = [];
var snapshot = this.store.snapshot || this.store.data;
snapshot.each(function(r) {
if(r.get(this.checkField)) {
c.push(r.get(field));
}
}, this);
return c.join(this.separator);
}
,onBeforeQuery:function(qe) {
qe.query = qe.query.replace(new RegExp(this.getCheckedDisplay() + '[ ' + this.separator + ']*'), '');
}
,onRealBlur:function() {
this.list.hide();
var rv = this.getRawValue();
var rva = rv.split(new RegExp(RegExp.escape(this.separator) + ' *'));
var va = [];
var snapshot = this.store.snapshot || this.store.data;
Ext.each(rva, function(v) {
snapshot.each(function(r) {
if(v === r.get(this.displayField)) {
va.push(r.get(this.valueField));
}
}, this);
}, this);
this.setValue(va.join(this.separator));
this.store.clearFilter();
}
,onSelect:function(record, index) {
if(this.fireEvent('beforeselect', this, record, index) !== false){
record.set(this.checkField, !record.get(this.checkField));
if(this.store.isFiltered()) {
this.doQuery(this.allQuery);
}
this.setValue(this.getCheckedValue());
this.fireEvent('select', this, record, index);
}
}
,setValue:function(v) {
if(v) {
v = '' + v;
if(this.valueField) {
this.store.clearFilter();
this.store.each(function(r) {
var checked = !(!v.match(
'(^|' + this.separator + ')' + RegExp.escape(r.get(this.valueField))
+'(' + this.separator + '|$)'))
;
r.set(this.checkField, checked);
}, this);
this.value = this.getCheckedValue();
this.setRawValue(this.getCheckedDisplay());
if(this.hiddenField) {
this.hiddenField.value = this.value;
}
}
else {
this.value = v;
this.setRawValue(v);
if(this.hiddenField) {
this.hiddenField.value = v;
}
}
if(this.el) {
this.el.removeClass(this.emptyClass);
}
}
else {
this.clearValue();
}
} // eo function setValue
// }}}
// {{{
/**
* Selects all items
*/
,selectAll:function() {
this.store.each(function(record){
// toggle checked field
record.set(this.checkField, true);
}, this);
//display full list
this.doQuery(this.allQuery);
this.setValue(this.getCheckedValue());
} // eo full selectAll
// }}}
// {{{
/**
* Deselects all items. Synonym for clearValue
*/
,deselectAll:function() {
this.clearValue();
} // eo full deselectAll
// }}}
}); // eo extend
// register xtype
Ext.reg('lovcombo', Ext.ux.form.LovCombo);
在另一个extjs中应用这个样式
Ext.namespace("Ext.ux.form");//在文件头不要忘记引用命名空间
{/////////////////////////////////////////这个原先的xtype是combo的,下拉单选框
columnWidth : 1,
border : false,
layout : 'form',
items : [{
hideLabel:true,
hidden:true,
xtype:'lovcombo',//就是这一句了,没有其他了,有效代码就这两句,命运折腾人呀
fieldLabel : '协办部门',
name : 'xiebanDeptId',
id : 'xiebanDeptId',
anchor : '98%', // nessasary
allowBlank : false,
displayField : 'deptName',
valueField : 'deptId',
editable : false,
triggerAction : 'all',
allowBlank : true,
blankText : '请指定协办部门',
emptyText : '请指定协办部门',
store : Neo.frontdesk.deptStore
}]
}]
}
效果如图:
落了一个地方,要加添加一个css文件,否则不会显示复选框,我的这个就没显示,加上css就可以了。
lovcombo.css
.ux-lovcombo-icon {
width:16px;
height:16px;
float:left;
background-position: -1px -1px ! important;
background-repeat:no-repeat ! important;
}
.ux-lovcombo-icon-checked {
background: transparent url(../../../extjs/resources/images/slate/menu/checked.gif);
}
.ux-lovcombo-icon-unchecked {
background: transparent url(../../../extjs/resources/images/slate/menu/unchecked.gif);
}
- 大小: 34.1 KB
分享到:
相关推荐
EXT控件是Sencha EXT JS框架中的一种组件,它提供了丰富的用户界面元素,用于构建复杂的Web应用程序。...对于使用EXT JS开发Web应用的程序员来说,理解并掌握lovcombo的用法和相关修正具有很高的实用价值。
在EXTJS框架中,`Ext.ux.form.LovCombo`是一种自定义组件,它扩展了基本的`Ext.form.field.ComboBox`,提供了更丰富的功能,尤其是针对多选和联动选择的需求。这个组件通常用于创建具有“lov”(即“Look Up Value”...
EXT下拉列表扩展LOVCombo(LovCombo)是一种特殊类型的下拉列表,它不仅提供传统的单选选项,还支持多选,通过复选框的形式来实现。这种组件在数据录入、筛选和配置场景中非常常见,因为它可以方便地让用户从多个...
文件名中的“-已解决Bug版-带操作详解”意味着包含了详细的使用指南,帮助用户理解和使用这个修复后的lovcombo组件。 在使用lovcombo时,开发者需要注意以下几点: 1. **配置项**:lovcombo有许多可配置的选项,如...
综上所述,"lovcombo"是一个由Saki开发的Ext JS框架的用户界面扩展,称为LovCombo,它可能是一个下拉列表框的增强版,支持更丰富的联动选择功能。通过解压并查看这些文件,开发者可以学习如何在自己的应用程序中集成...
6. **将LovCombo添加到布局**:将LovCombo组件添加到页面的布局中,如面板(Ext.container.Panel)或其他容器。 通过以上步骤,你可以创建一个功能完善的ExtJS 3多选下拉框LovCombo。这个组件在实际开发中具有很高...
5. **操作详解**:在使用lovcombo时,了解如何初始化组件、如何与后台交互获取数据、如何处理用户的选择以及如何更新界面是非常重要的。这通常包括设置lovcombo的配置,绑定数据源,监听用户交互,以及在需要时动态...
在Java EXT项目中,下拉列表多选框(LovCombo)是一种常见的用户界面元素,它允许用户在下拉菜单中选择一个或多个选项。EXT框架是Sencha公司开发的一个JavaScript库,专门用于构建富客户端Web应用程序,其组件丰富,...
在ExtJS 3.4中,LovCombo通常由`Ext.form.ComboBox`类扩展而来,它提供了一个下拉框,用户可以在其中选择一个或多个值。然而,原生的ComboBox并不直接支持全选和取消全选的功能。为了实现这个功能,我们需要自定义...
在IT行业中,尤其是在Web开发领域,`EXTJS`是一个广泛使用的JavaScript库,它提供了一套完整的组件模型,用于构建富客户端应用。标题提到的“解决EXT下拉列表全选和去全选功能”是一个常见的需求,特别是在数据表格...
例如,可以使用Ext.XTemplate来定义每个列表项的显示样式。 5. 事件处理:监听LOV Combo的select事件,以便在用户选择值后进行相应的业务处理。 6. CSS样式:在本案例中,lovcombo.css文件可能包含了对LOV Combo...
本篇文章将深入探讨Ext多选下拉框的使用方法、功能特性以及如何自定义和优化。 首先,Ext多选下拉框是基于Ext.form.field.ComboBox构建的,通过扩展其默认行为来支持多选。它通常包含一个可输入的文本字段和一个...
在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1. **EXTJS的Combo组件**:Combo是EXTJS中的一种表单组件,它提供了下拉列表的功能,可以用于输入或者选择数据。它既可以作为单选也可以作为...
### ExtJS 下拉多选框lovcombo:省份与城市级联选择实现 #### 背景介绍 在软件开发过程中,经常会遇到需要实现省份、城市等地理位置信息的级联选择功能的需求。对于前端开发者而言,如何高效地实现这一功能成为了...
Ext JS是一个广泛使用的JavaScript库,用于构建富客户端Web应用程序。它提供了丰富的组件库,包括数据绑定、模型、视图、控制器等概念,帮助开发者构建复杂的用户界面。这篇博文可能是作者在使用Ext JS过程中的一些...
强大的Ext单多选下拉列表控件;基于 LovCombo ; * 作者:中国.湖南.长沙.任文敏 * * 功能: * 1. 支持:★ 多选|单选 (isSingle:'N|Y') * 2. 多选支持: 全选/全不选 * 3. ★ 多选且分页支持: 全部清除 * 4...
通过这些实例,开发者不仅可以学习如何使用和自定义这些插件,还能掌握如何将它们整合到自己的ExtJS项目中,提升应用程序的功能和外观。同时,这些实例也提供了很好的参考,帮助解决在实际开发中遇到的类似问题。
在生产环境中,通常会使用精简版的`ext-all.js`来减小文件大小。 `resources`目录可能包含了ExtJS的资源文件,如CSS样式表、图片和其他静态资源,它们对于正确显示组件样式至关重要。 `adapter`可能是指ExtJS的...
"ext4实现带复选框的多选下拉框"这个主题聚焦于如何在EXTJS 4框架中构建一个功能丰富的UI组件,它允许用户通过复选框进行多选操作,提升用户体验。EXTJS是一个流行的JavaScript库,提供了丰富的组件库来构建复杂的...
7. **API和配置**:为了让开发者方便地使用这个多选下拉框,需要提供清晰的API接口和配置选项。这可能包括设置可选值、获取选中值、设置全选状态等功能。 总结来说,EXTJS多选下拉框的实现涉及EXTJS组件的扩展、...