`
xiaochengfu1
  • 浏览: 35513 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

多选下拉框扩展

    博客分类:
  • ext
 
阅读更多
Ext.form.MultiSelect=Ext.extend(Ext.DataView,{
    multiSelect:true,
    tpl: new Ext.XTemplate(  //view的模板
        '<tpl for=".">',
            '<div class="x-combo-list-item">{text}</div>',
        '</tpl>'
    ),
    style:'cursor:pointer;overflow:auto',
    cls:'x-combo-list-inner',
    ctCls:'x-combo-list',
    overClass:'x-view-over',
    selectedClass:'x-combo-selected',
    itemSelector:'div.x-combo-list-item',
    initComponent:function(){
        Ext.form.MultiSelect.superclass.initComponent.call(this);
    },
    onRender:function(){
        Ext.form.MultiSelect.superclass.onRender.apply(this,arguments);
        var _this=this;
        // 需要鼠标选择
        this.el.dom.onselectstart=function(){return false}  //防止鼠标选择
        new Ext.KeyNav(this.el, {
            "up" : function(e){
                var selIndex=_this.getSelectedIndexes()[0]-1;
                var index=selIndex>-1?selIndex:_this.store.getCount()-1;
                _this.select(index);
            },
            "down" : function(e){
                var selIndex=_this.getSelectedIndexes()[0]+1;
                var index=selIndex==_this.store.getCount()?0:selIndex;
                _this.select(index);
            }
        })
        //定位选中项保证可见
        this.on('selectionchange',function(t,node){    //定位选中项保证可见
            if(!(node=node[0]))return;
//            selectFirst();
            var ct=this.el.dom,barHeight=0,diff;
            var ctSt=ct.scrollTop,nodeOft=node.offsetTop;
            if(ct.offsetHeight-ct.clientHeight>5){
                barHeight=16;
            }
            var cntPos=[ctSt,ctSt+ct.offsetHeight-barHeight];
            var nodePos=[nodeOft,nodeOft+node.offsetHeight];
            // 选择后不需要重新定位到最上面
//            if(nodePos[0]<cntPos[0]){
//                ct.scrollTop=nodeOft;
//            }
//            if((diff=nodePos[1]-cntPos[1])>0){
//                ct.scrollTop=ctSt+diff+2;
//            }
        });
        //选中第一行
        var selectFirst=function(){
            setTimeout(function() {
                _this.select(0)
            }, 1)
        };
        selectFirst();
        this.store.on('load',selectFirst)
    }
});



new Ext.form.MultiSelect({
       					 store : new Ext.data.JsonStore({
								proxy : new Ext.data.HttpProxy({
									url : 'xxx'
								}),
								autoLoad : true,
								root : 'msg',
								fields : [
									{name : 'text',type : 'string',mapping : 'text'},
									{name : 'value',type : 'string',mapping : 'value'}
								],
								listeners : {
									'beforeload' : function(store, options) {
										// 类型
										Ext.apply(this.baseParams, {
											'type' : 'xx'
										});
									},
									'load' : function(ds, options) {
										var firstValue = ds.getRange()[0].data.value; // 这种方法可以获得第一项的值
									}
								}
						}),
						id: 'xxx',
						simpleSelect:false,
						height : 80,
						width : 100
					})
//获取值方式
		var xx= Ext.getCmp('xxx');
//		var indexs = xx.getSelectedIndexes();
		var xxRec=xx.getSelectedRecords();
		var x= '';
		Ext.each(xxRec,function(rec){
            x+=','+rec.get('value')
        })
        x= x.substr(1);
分享到:
评论

相关推荐

    extjs多选 下拉框扩展

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

    Swing控件,多选下拉框

    要实现多选下拉框功能,我们需要自定义组件或者使用第三方库来扩展`JComboBox`的功能。 ### 一、自定义多选下拉框 自定义多选下拉框通常涉及以下几个关键步骤: 1. **创建自定义模型**:你需要创建一个自定义的`...

    jquery实现的多选下拉框

    《jQuery实现的多选下拉框深度解析》 在网页开发中,为了提供更好的用户体验,我们经常需要使用到多选下拉框。jQuery库为我们提供了丰富的功能,使得创建交互式的多选下拉框变得轻而易举。在这里,我们将深入探讨...

    CheckBoxList_WinForm多选下拉框_下拉多选_

    以上就是实现一个WinForm的多选下拉框控件的基本步骤。通过这样的自定义控件,我们可以更灵活地满足用户在界面上的选择需求,同时保持了标准控件的易用性和兼容性。在实际项目中,还可以根据具体需求进行进一步的...

    C# 带checkbox的多选下拉框

    "带checkbox的多选下拉框"是一种常见的需求,它允许用户在下拉菜单中通过勾选复选框来选择多个选项。本知识点主要探讨如何在C#中实现这种控件,并将它应用到实际项目中。 首先,我们需要了解基本的Windows Forms...

    EXT3.2 多选下拉框

    多选下拉框在EXT JS中通常通过`Ext.form.CheckboxGroup`或`Ext.form.RadioGroup`类来实现,但在EXT3.2中,实现多选下拉框功能通常会使用`Ext.form.FieldSet`或`Ext.form.ComboBox`的自定义扩展。这类组件提供了复选...

    几种多选下拉框的代码

    BootstrapSelect是基于Bootstrap的扩展,它增强了原生的HTML `&lt;select&gt;` 元素,提供了更美观、可定制的多选下拉框。为了使用bootstrapSelect,你需要引入以下依赖文件: 1. Bootstrap的基础样式文件(通常为`...

    java swing 多选下拉框 支持动态加载数据

    在Swing中,多选下拉框通常由JComboBox类实现,但默认的JComboBox只支持单选。为了实现多选功能,我们需要扩展JComboBox或者使用第三方库,如JList或JTable与弹出面板组合。 本主题涉及的知识点主要包括以下几个...

    jQuery多选下拉框插件

    **jQuery多选下拉框插件详解** 在Web开发中,多选下拉框是一种常见的交互元素,它允许用户在一组选项中选择多个值。jQuery作为最流行的JavaScript库之一,提供了许多插件来增强这种用户体验。`jquery.multi-select....

    layui-多选下拉框-xm-select-demo源码

    xm-select是layui扩展的一个强大组件,专为实现多选下拉框功能而设计。这个组件以其简洁的API和美观的样式,极大地提升了用户体验,简化了开发者的工作。 在“layui-多选下拉框-xm-select”中,源码主要分为两大...

    jquery.multiselect.js多选下拉框选择代码

    jQuery.multiselect.js是基于流行的JavaScript库jQuery构建的,它扩展了HTML `&lt;select&gt;` 元素的功能,使得多选下拉框具有更丰富的样式和交互性。这个插件允许用户通过简单的配置,实现分组、过滤、拖放排序等多种...

    多选下拉框 带模糊查询下拉框内容

    1. **多选下拉框**:传统的下拉框通常只允许用户选择一个值,而多选下拉框则扩展了这一功能,让用户能够选择多个值。这在需要用户从一系列选项中做出多个选择时非常实用,如在配置系统设置、筛选条件或分配权限时。...

    多选下拉框(JS+DIV)

    本项目中,我们采用JavaScript和HTML的DIV元素来实现一个自定义的多选下拉框,提供了面向对象的设计思路,使得开发者可以方便地进行功能扩展。 首先,JavaScript是一种广泛用于网页动态效果的脚本语言,它能够与...

    jquery 多选下拉框

    **jQuery 多选下拉框**是Web开发中一种常见的交互元素,用于提供用户可以选择多个选项的下拉菜单。在传统的HTML中,我们通常使用`&lt;select&gt;`元素创建下拉框,但仅限于单选。然而,通过结合使用jQuery库,我们可以实现...

    QComboBox多选下拉框,可点击删除

    综上所述,实现一个`QComboBox`的多选下拉框并带有删除功能需要对Qt的模型-视图-控制器(MVC)架构、自定义控件、信号与槽机制有深入理解。通过上述步骤,我们可以构建出一个强大且易用的自定义组件,极大地增强了`...

    自定义多选下拉框标签

    本文将深入探讨如何实现一个自定义的多选下拉框标签,包括其设计原理、实现方法和常见参数调整,以及如何在项目中有效应用。 一、自定义标签的理解与应用 自定义标签是前端开发中的一种高级技巧,它允许开发者创建...

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

    在ExtJS 3.4.0版本中,多选下拉框(Multiselect Combobox)是一种常见的用户界面组件,用于提供多个选项供用户选择。这个功能增强了标准的单选下拉框,允许用户同时选择多个条目,通常通过复选框实现。在描述中提到...

    js扩展多选下拉框

    在网页开发中,交互式组件是提升用户体验的关键因素之一,其中“js扩展多选下拉框”就是一个典型的实例。这个组件允许用户在一个下拉菜单中选择多个选项,从而提供了更丰富的数据输入方式。本文将详细讲解如何使用...

    多选下拉框相关引用.zip

    在标题“多选下拉框相关引用.zip”中提到的,是关于Bootstrap中实现多选下拉框的一些关键文件。这些文件主要用于创建功能完备、样式美观的多选下拉框,使用户能够在下拉菜单中选择多个选项。以下是关于这些文件及其...

    WPF多选的下拉框

    "WPF多选的下拉框"是一个这样的自定义控件,它扩展了标准的下拉框(ComboBox)功能,允许用户进行多项选择,而不仅仅是单选。下面将详细介绍如何实现这样一个功能,以及如何利用DataTable绑定数据。 1. **多选机制*...

Global site tag (gtag.js) - Google Analytics