Extjs4 Sencha网格:隐藏列和组合框

Extjs4 Sencha网格:隐藏列和组合框,extjs4,extjs,Extjs4,Extjs,首先是代码的一小部分: { text: 'TipoVisitaID', hidden: true, dataIndex: 'TipoVisitaID', itemId: 'TipoVisitaID' }, { text: 'TIPO VISITA', flex: 1, sortable: true,

首先是代码的一小部分:

{                text: 'TipoVisitaID',
            hidden: true,
            dataIndex: 'TipoVisitaID',
            itemId: 'TipoVisitaID'
        }, {
            text: 'TIPO VISITA',
            flex: 1,
            sortable: true,
            align: 'right',
            dataIndex: 'TipoVisita',
            editor: {
                xtype: 'combo',
                allowBlank: true,
                store: allTiposVisita,
                valueField: 'Id',
                name: 'TiposVisitaCombo',
                itemId: 'TiposVisitaCombo',
                tpl: Ext.create('Ext.XTemplate',
                                    '<tpl for=".">',
                                        '<div class="x-boundlist-item">{Designacao}</div>',
                                    '</tpl>'),
                displayTpl: Ext.create('Ext.XTemplate', '<tpl for=".">', '{Designacao}', '</tpl>')
            }
        },

但它不起作用…

添加一个事件侦听器来编辑网格上的事件,并从那里更新隐藏字段中的数据。编辑完成后将触发此事件

grid.on('edit', function (editor, e){ 
     e.record.set('TipoVisitaID', e.value);
}

你在找这样的东西吗

var theHidden = Ext.getCmp('TipoVisitaID');
var theCombo = Ext.getCmp('TiposVisitaCombo'); =
theCombo.on('change', function(combo, newValue, oldValue, e){
  theHidden.setValue(newValue);
});

我已经解决了这个问题

{
            text: 'TIPO VISITA',
            flex: 1,
            sortable: true,
            align: 'right',
            dataIndex: 'TipoVisitaID',
            renderer: function (loader, response, active) {
                return active.raw.TipoVisita;
            },
            editor: {
                xtype: 'combo',
                allowBlank: true,
                store: allTiposVisita,
                valueField: 'Id',
                name: 'TiposVisitaCombo',
                itemId: 'TiposVisitaCombo',
                tpl: Ext.create('Ext.XTemplate',
                                    '<tpl for=".">',
                                        '<div class="x-boundlist-item">{Designacao}</div>',
                                    '</tpl>'),
                displayTpl: Ext.create('Ext.XTemplate', '<tpl for=".">', '{Designacao}', '</tpl>')
            }
        },

因此,使用ID设置组合的值(使其成为预选的值)。

您希望何时执行此操作?使用方法
getValue()
而不是
value
。getValue()也不起作用。。。我希望当内联编辑开始时,组合框有一个预先选择的值。这仅在用户直接单击单元格时有效。。。我希望预选值独立于单击的单元格“显示”…Ext.getCmp(“#TipoVisitaID”)返回未定义的值。另外,我想要的是combo.setValue(theHidden),这样当combo呈现时,隐藏的值将是预选的值。哎呀,我的错误是,我几乎不使用getCmp,也没有测试代码。我想你可以用你的代码
{
            text: 'TIPO VISITA',
            flex: 1,
            sortable: true,
            align: 'right',
            dataIndex: 'TipoVisitaID',
            renderer: function (loader, response, active) {
                return active.raw.TipoVisita;
            },
            editor: {
                xtype: 'combo',
                allowBlank: true,
                store: allTiposVisita,
                valueField: 'Id',
                name: 'TiposVisitaCombo',
                itemId: 'TiposVisitaCombo',
                tpl: Ext.create('Ext.XTemplate',
                                    '<tpl for=".">',
                                        '<div class="x-boundlist-item">{Designacao}</div>',
                                    '</tpl>'),
                displayTpl: Ext.create('Ext.XTemplate', '<tpl for=".">', '{Designacao}', '</tpl>')
            }
        },
Ext.ComponentQuery.query("#TiposVisitaCombo")[0].setValue(e.record.raw.TipoVisitaID);