`
floger
  • 浏览: 214399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ext lovcombo的使用

阅读更多

 

如下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控件lovcombo

    EXT控件是Sencha EXT JS框架中的一种组件,它提供了丰富的用户界面元素,用于构建复杂的Web应用程序。...对于使用EXT JS开发Web应用的程序员来说,理解并掌握lovcombo的用法和相关修正具有很高的实用价值。

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

    在EXTJS框架中,`Ext.ux.form.LovCombo`是一种自定义组件,它扩展了基本的`Ext.form.field.ComboBox`,提供了更丰富的功能,尤其是针对多选和联动选择的需求。这个组件通常用于创建具有“lov”(即“Look Up Value”...

    Ext下拉列表扩展lovcombo

    EXT下拉列表扩展LOVCombo(LovCombo)是一种特殊类型的下拉列表,它不仅提供传统的单选选项,还支持多选,通过复选框的形式来实现。这种组件在数据录入、筛选和配置场景中非常常见,因为它可以方便地让用户从多个...

    ExtJS扩展:lovcombo(已解决Bug版)

    文件名中的“-已解决Bug版-带操作详解”意味着包含了详细的使用指南,帮助用户理解和使用这个修复后的lovcombo组件。 在使用lovcombo时,开发者需要注意以下几点: 1. **配置项**:lovcombo有许多可配置的选项,如...

    lovcombo-1.0.zip lovcombo-1.0.zip

    综上所述,"lovcombo"是一个由Saki开发的Ext JS框架的用户界面扩展,称为LovCombo,它可能是一个下拉列表框的增强版,支持更丰富的联动选择功能。通过解压并查看这些文件,开发者可以学习如何在自己的应用程序中集成...

    Extjs3 多选下拉框LovCombo

    6. **将LovCombo添加到布局**:将LovCombo组件添加到页面的布局中,如面板(Ext.container.Panel)或其他容器。 通过以上步骤,你可以创建一个功能完善的ExtJS 3多选下拉框LovCombo。这个组件在实际开发中具有很高...

    lovcombo-已解决Bug版-带操作详解

    5. **操作详解**:在使用lovcombo时,了解如何初始化组件、如何与后台交互获取数据、如何处理用户的选择以及如何更新界面是非常重要的。这通常包括设置lovcombo的配置,绑定数据源,监听用户交互,以及在需要时动态...

    EXT 项目下拉列表多选框 使用示例 含源代码

    在Java EXT项目中,下拉列表多选框(LovCombo)是一种常见的用户界面元素,它允许用户在下拉菜单中选择一个或多个选项。EXT框架是Sencha公司开发的一个JavaScript库,专门用于构建富客户端Web应用程序,其组件丰富,...

    LovCombo.zip

    在ExtJS 3.4中,LovCombo通常由`Ext.form.ComboBox`类扩展而来,它提供了一个下拉框,用户可以在其中选择一个或多个值。然而,原生的ComboBox并不直接支持全选和取消全选的功能。为了实现这个功能,我们需要自定义...

    解决ext下拉列表全选和去全选功能

    在IT行业中,尤其是在Web开发领域,`EXTJS`是一个广泛使用的JavaScript库,它提供了一套完整的组件模型,用于构建富客户端应用。标题提到的“解决EXT下拉列表全选和去全选功能”是一个常见的需求,特别是在数据表格...

    Extjs之--带分页的lovcombo控件

    例如,可以使用Ext.XTemplate来定义每个列表项的显示样式。 5. 事件处理:监听LOV Combo的select事件,以便在用户选择值后进行相应的业务处理。 6. CSS样式:在本案例中,lovcombo.css文件可能包含了对LOV Combo...

    Ext多选下拉框

    本篇文章将深入探讨Ext多选下拉框的使用方法、功能特性以及如何自定义和优化。 首先,Ext多选下拉框是基于Ext.form.field.ComboBox构建的,通过扩展其默认行为来支持多选。它通常包含一个可输入的文本字段和一个...

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

    在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1. **EXTJS的Combo组件**:Combo是EXTJS中的一种表单组件,它提供了下拉列表的功能,可以用于输入或者选择数据。它既可以作为单选也可以作为...

    ExtJS 下拉多选框lovcombo

    ### ExtJS 下拉多选框lovcombo:省份与城市级联选择实现 #### 背景介绍 在软件开发过程中,经常会遇到需要实现省份、城市等地理位置信息的级联选择功能的需求。对于前端开发者而言,如何高效地实现这一功能成为了...

    Ext点滴

    Ext JS是一个广泛使用的JavaScript库,用于构建富客户端Web应用程序。它提供了丰富的组件库,包括数据绑定、模型、视图、控制器等概念,帮助开发者构建复杂的用户界面。这篇博文可能是作者在使用Ext JS过程中的一些...

    伊兰COMBO (强大的Ext单多选下拉列表控件;带详细示例)

    强大的Ext单多选下拉列表控件;基于 LovCombo ; * 作者:中国.湖南.长沙.任文敏 * * 功能: * 1. 支持:★ 多选|单选 (isSingle:'N|Y') * 2. 多选支持: 全选/全不选 * 3. ★ 多选且分页支持: 全部清除 * 4...

    Ext常用扩展插件实例收集

    通过这些实例,开发者不仅可以学习如何使用和自定义这些插件,还能掌握如何将它们整合到自己的ExtJS项目中,提升应用程序的功能和外观。同时,这些实例也提供了很好的参考,帮助解决在实际开发中遇到的类似问题。

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

    在生产环境中,通常会使用精简版的`ext-all.js`来减小文件大小。 `resources`目录可能包含了ExtJS的资源文件,如CSS样式表、图片和其他静态资源,它们对于正确显示组件样式至关重要。 `adapter`可能是指ExtJS的...

    ext4实现带复选框的多选下拉框

    "ext4实现带复选框的多选下拉框"这个主题聚焦于如何在EXTJS 4框架中构建一个功能丰富的UI组件,它允许用户通过复选框进行多选操作,提升用户体验。EXTJS是一个流行的JavaScript库,提供了丰富的组件库来构建复杂的...

    extjs多选下拉框

    7. **API和配置**:为了让开发者方便地使用这个多选下拉框,需要提供清晰的API接口和配置选项。这可能包括设置可选值、获取选中值、设置全选状态等功能。 总结来说,EXTJS多选下拉框的实现涉及EXTJS组件的扩展、...

Global site tag (gtag.js) - Google Analytics