ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 在可编辑的网格中,如何在选择项目时使Ext组合框立即完成编辑模式?

2019-06-20 13:22:25  阅读:300  来源: 互联网

标签:javascript combobox extjs extjs4 extjs4-1


我已经使用CellEditing插件配置了一个可编辑的Ext JS 4网格.网格中的某些单元格具有文本字段编辑器,少数单元格使用组合框编辑器.这一切都很好,但我对组合框编辑器的默认行为有一个小问题.

基本上,在编辑具有组合框编辑器的单元格时,如果使用鼠标从下拉列表中选择项目,则该单元格的“编辑”模式不会完成.换句话说,单元格不会立即退出编辑模式并被标记为脏.相反,它只会处于编辑模式,直到您单击页面上的其他位置.

我认为Sencha将此作为组合框编辑器的默认行为是不寻常的,但我不会抱怨.我只想知道如何能够选择一个组合框项并立即使单元格退出编辑模式,但我不知道在哪里定义此自定义行为.

这里有一个小例子JS小提琴:

http://jsfiddle.net/FFwkM/

下面复制的代码用于后代:

var stateStore = Ext.create('Ext.data.Store', {
    fields: ['name'],
    data : [
        {"name":"Alabama"},
        {"name":"Alaska"},
        {"name":"Arizona"}
    ]
});

var gridStore = Ext.create('Ext.data.Store', {
    fields:['firstName', 'state'],
    data:{'items':[
        {"firstName":"Lisa", "state":"Alabama"},
        {"firstName":"Bart", "state":"Alabama"},
        {"firstName":"Homer", "state":"Alabama"},
        {"firstName":"Marge", "state":"Arizona"}
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: gridStore,
    columns: [{
        header: 'First Name',  dataIndex: 'firstName', flex: 1, editor: 'textfield'
    }, {
        header: 'State', dataIndex: 'state', flex: 1, editor: {
            xtype: 'combobox', store: stateStore, queryMode: 'local', displayField: 'name', valueField: 'name'
        }
    }],
    selType: 'cellmodel',
    plugins: [{
        ptype: 'cellediting',
        clicksToEdit: 2
    }],
    height: 150,
    width: 200,
    renderTo: Ext.getBody()
});

解决方法:

实现所需行为的一种方法是在组合框上为select事件添加侦听器,然后在处理程序中触发blur事件.例:

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: gridStore,
    columns: [{
        header: 'First Name',  dataIndex: 'firstName', flex: 1, editor: 'textfield'
    }, {
        header: 'State', dataIndex: 'state', flex: 1, editor: {
            xtype: 'combobox', store: stateStore, queryMode: 'local', displayField: 'name', valueField: 'name',
            listeners: {
                select: function(combo, recs, opts){
                    combo.fireEvent('blur'); //<------
                }
            }
        }
    }],
    selType: 'cellmodel',
    plugins: [{
        ptype: 'cellediting',
        clicksToEdit: 2
    }],
    height: 150,
    width: 200,
    renderTo: Ext.getBody()
});

工作叉在这里:http://jsfiddle.net/Zd5QM/

标签:javascript,combobox,extjs,extjs4,extjs4-1
来源: https://codeday.me/bug/20190620/1244491.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有