`

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

    `MultiSelect.js` 文件可能是修改后的 `itemselector` 组件实现,包含了对多选功能的扩展或优化。在这个文件中,我们可能会看到自定义的事件处理程序,用于监听用户在两个列表间的交互,以及与两个数据存储之间的...

    extJS3.1源码及demo

    通过下载并研究"ext-3.1.0"这个压缩包中的源码和示例,开发者不仅可以学习到ExtJS的基本用法,还能深入理解其内部机制,这对于提升JavaScript开发技能和扩展自定义功能非常有帮助。不过需要注意,随着技术的发展,...

    Extjs treeselector 树结构选择器

    ExtJS TreeSelector是一款基于ExtJS库的组件,它扩展了基础的itemselector功能,提供了一种以树形结构展示数据的选择器。这个组件特别适用于那些需要用户从层次化的数据集中进行选择的应用场景,例如组织架构、目录...

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    ComboboxTree是ExtJS中的一个自定义组件,它扩展了标准的ComboBox组件,增加了树状结构的功能。用户可以在下拉列表中看到一个树形结构,逐级展开节点,选择需要的项。这种组件特别适合于那些需要展示层级关系且允许...

    Extjs MultiselectItemSelector

    在这个文件中,开发者可以找到关于如何扩展ExtJs的内置组件,添加多选和拖放等功能的代码。`DDView.js` 可能是用于实现拖放功能的视图类,拖放功能使得用户可以通过鼠标操作直接在列表中调整已选项目的顺序。 在...

    extjs+struts2的一个套路模式

    在IT领域,特别是Web开发中,Struts2与ExtJS的结合是一种常见且高效的技术搭配。...总之,Struts2与ExtJS的结合,为Web应用提供了强大的功能支持与灵活的扩展能力,是现代Web开发中不可或缺的一环。

    icon combobox

    Icon Combobox是ExtJS中Combobox组件的一种扩展,它在标准Combobox的基础上增加了显示图标的功能。这种组件通常用于提供带有图标的选项,用户可以通过点击下拉列表选择相应的项,同时图标可以帮助用户快速识别每个...

    如何实现带有清单的组合框并选择ext js 4.2中的所有选项

    4. **Sencha Architect 2的使用**: - 使用Sencha Architect 2图形化界面创建一个新的Ext JS项目。 - 添加ComboBox组件到布局中,并配置相关属性。 - 在Store中定义数据模型,包含显示字段和值字段。 - 修改...

Global site tag (gtag.js) - Google Analytics