`

ExtJS4 ItemSelector 扩展

 
阅读更多
ImageBoundList.js
Ext.define('Ext.view.ImageBoundList', {
			extend : 'Ext.view.BoundList',
			alias : 'widget.imageboundlist',
			alternateClassName : 'Ext.ImageBoundList',		
				
			initComponent: function() {
				var me = this;
				
				if (!me.tpl) {
					me.tpl = new Ext.XTemplate(
						'<ul><tpl for=".">',
						'<li role="option" class="' + me.itemCls + '">'
								+ '<img src="'
								+ me.getInnerTpl(me.imageField)
								+ '" align="top" />'
								+ me.getInnerTpl(me.displayField) + '</li>',
						'</tpl></ul>');
				} else if (Ext.isString(me.tpl)) {
					me.tpl = Ext.create('Ext.XTemplate', me.tpl);
				}

				me.callParent();
			}
			
		});


MultiSelect.js
 uses: [
        'Ext.view.ImageBoundList',
        'Ext.form.FieldSet',
        'Ext.ux.layout.component.form.MultiSelect',
        'Ext.view.DragZone',
        'Ext.view.DropZone'
    ],

...


/**
     * @cfg {String} displayField Name of the desired display field in the dataset (defaults to 'text').
     */
    displayField: 'text',
	
	/**
     * @cfg {String} imageField Name of the desired display field in the dataset (defaults to 'image').
     */
    imageField: 'image',

...

onRender: function(ct, position) {
        var me = this,
            panel, boundList, selModel;

        me.callParent(arguments);

        boundList = me.boundList = Ext.create('Ext.view.ImageBoundList', {
            deferInitialRefresh: false,
            multiSelect: true,
            store: me.store,
            displayField: me.displayField,
			imageField: me.imageField,
            border: false,
            disabled: me.disabled
        });


ItemSelector.js
onRender: function(ct, position) {
        var me = this,
            baseCSSPrefix = Ext.baseCSSPrefix,
            ddGroup = 'ItemSelectorDD-' + Ext.id(),
            commonConfig = {
                displayField: me.displayField,
                valueField: me.valueField,
		imageField: me.imageField,


multiselect-demo.js

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', '../ux');
Ext.require([
    'Ext.form.Panel',
    'Ext.ux.form.MultiSelect',
    'Ext.ux.form.ItemSelector'
]);

Ext.onReady(function(){
   
    var ds = Ext.create('Ext.data.ArrayStore', {
        data: [[123,'One Hundred Twenty Three', '../shared/icons/fam/cog.png'],
            ['1', 'One', '../shared/icons/fam/grid.png'], ['2', 'Two', '../shared/icons/fam/grid.png'], ['3', 'Three', '../shared/icons/fam/grid.png'], ['4', 'Four', '../shared/icons/fam/grid.png'], ['5', 'Five', '../shared/icons/fam/grid.png'],
            ['6', 'Six', '../shared/icons/fam/grid.png'], ['7', 'Seven', '../shared/icons/fam/grid.png'], ['8', 'Eight', '../shared/icons/fam/grid.png'], ['9', 'Nine', '../shared/icons/fam/grid.png']],
        fields: ['value','text', 'image'],
        sortInfo: {
            field: 'value',
            direction: 'ASC'
        }
    });

    /*
     * Ext.ux.form.ItemSelector Example Code
     */
    var isForm = Ext.widget('form', {
        title: 'ItemSelector Test',
        width: 700,
        bodyPadding: 10,
        renderTo: 'itemselector',
        items:[{
            xtype: 'itemselector',
            name: 'itemselector',
            id: 'itemselector-field',
            anchor: '100%',
            fieldLabel: 'ItemSelector',
            imagePath: '../ux/images/',
            store: ds,
            displayField: 'text',
            valueField: 'value',
			imageField: 'image',
            value: ['3', '4', '6'],
            allowBlank: false,
            msgTarget: 'side'
        }]
    });

});




效果:

  • 大小: 16.3 KB
分享到:
评论
3 楼 amos_tl 2012-05-16  
注意返回数据的格式
2 楼 amos_tl 2012-05-16  
改下store 的proxy为json就行了
1 楼 wilsonchen 2012-05-01  
楼主你没有试过从后台获取json数据作为itemselector的数据源啊?

相关推荐

    extjs4.2的itemselector

    4.2自带的itemselector,有问题,只有fromstore没有tostore,作了一些修改,可以使用,附件中有效果图

    包含各种类型的extjs小图标,Extjs4小图标

    包含各种类型的extjs小图标,Extjs4小图标

    Extjs4 combogrid扩展

    对combo进行扩展,支持grid显示。

    extjs多选 下拉框扩展

    extjs多选 下拉框扩展

    ExtJs中datetimefield扩展

    ExtJs中datetimefield扩展,不缺少任何文件,可以直接浏览效果,查看扩展代码

    Extjs4下拉多选扩展

    Extjs4下拉多选扩展

    Extjs treeselector 树结构选择器

    基于itemselector做出的拓展,fromField以树结构展示。

    Extjs4的demo

    Extjs4的demo 很不错的例子

    EXTJS4自学手册

    EXTJS4自学手册——EXT文件目录,本地加载文档,命名规范 EXTJS4自学手册——EXT基本方法、属性(onReady、define、create) EXTJS4自学手册——EXT基本方法、属性(apply、applyIf、constructor) EXTJS4自学手册...

    EXTJS扩展例子集

    EXTJS3.0扩展例子集合...内含源代码...

    extjs vtype 扩展正则

    Extjs表单VTYPE扩展,方便验证!

    extJS4升级至extJS6.6所遇问题及解决方案

    项目进行前端框架升级——extJS 4升级至extJS6.6所遇的一些问题及相对应的解决方案建议

    ExtJs DWR扩展 DWRProxy、DWRTreeLoader、DWRGridProxy

    ExtJs DWR扩展 DWRProxy、DWRTreeLoader、DWRGridProxy,经过EXT3.0版本测试! 通过DWR向Ext提供数据!非常棒的扩展!

    extJs3升级extjs4方案

    extJs3升级extjs4方案, extJs3升级extjs4需要修改大量代码

    ExtJS 组件扩展

    ExtJS 组件扩展 如何正确使用Extjs---扩展组件的两个层次

    Extjs4添加tooltip

    Extjs4的textfield控件竟然没有tooltip悬浮提示,这应该算是个bug吧。网上查了很多,也没有方案。后来自己通过查询并整理出这个方案,终于实现了。 思想如下: 在textfield渲染时注册mouseover事件,然后在其中调用...

    extjs-ux, EXT JS 4的一些插件和扩展.zip

    extjs-ux, EXT JS 4的一些插件和扩展 插件和 EXT JS 4扩展 Ext.ux. aceeditor.Panel 演示( 简单): 链接演示( 流 语法): 链接演示:链接论坛:链接 Ext.ux. grid.feature.Tileview 演示:链接

    extjs3.0 中扩展的日期控件

    由于extjs3.0自己封装的时间不能够选择时分秒,给大家开发带来了一些麻烦。虽然网上有ext2.0的日期扩展控件,但...公司现在项目正用了,因此我就对extjs3.0时间控件的扩展,实现了可选择时分秒功能。希望对大家有帮助。

    EXT JS ExtJS 4

    我很自豪能代表Sencha和ExtJS团队和大家成功的分享了ExtJS 4的预览版、3个beta版和今天发布的正式版等5个版本。 ExtJS 4从创建之初,就以最全面现代化为目标,它采用了改进的架构和加入了许多新的特性,从而使你可以...

    ExtJS4中文教程2 开发笔记 chm

    ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ExtJS4学习笔记(二)---HBox的使用 ExtJS4学习笔记(五)---Grid分页 ExtJS4学习笔记(八)---Grid多选 全选 ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(十)--...

Global site tag (gtag.js) - Google Analytics