【发布时间】:2012-02-22 23:42:15
【问题描述】:
我正在尝试将一些 ExtJS 3.3 转换为 4.0。 在 ExtJS 3.x 中,我可以创建一个具有唯一组件 ID 的组合框,稍后我可以将其与 Ext.getCmp(Id) 一起使用,以获取该组合编辑器,以便我可以添加过滤器,或使用组合框本身。
现在,如果我指定一个 ID,网格不会在网格中正确呈现组合框,他们说我必须改用 itemId,然后实际上它可以工作,我的意思是组合在网格上正确呈现,但是我有无法使用该 itemId 来获取组合框本身。
我试过 grid.getComponent(itemId)、grid.headerCt.getComponent(),我不得不说这个 itemId 到底有什么用,我到底应该怎么得到这个编辑器。
grid.columns 集合具有简单字段(如文本、数字)的编辑器,对于组合框,它具有 getEditor 请求数据记录作为参数。
我不得不再说一次 wtf,ExtJS 3.x 太错误了,以至于他们想修复并 f.... 修复它。
真的,这次升级让我去了很多次……也许是我的错,但是……无论如何。
{
header: 'Ürün/Hizmet',
width: 90,
dataIndex: 'AlinanHizmetId',
editor: {
itemId: 'AlinanHizmetId',
xtype: 'combobox',
allowBlank: false,
selectOnFocus: true,
valueField: 'Id',
displayField: 'HizmetAd',
triggerAction: 'all',
typeAhead: false,
forceSelection: true,
lazyRender: true,
minChars: '2',
listWidth: 300,
store: Ext.create('Ext.data.Store', {
storeId: '',
fields: [{
name: 'HizmetTipAd',
caption: 'Hizmet Tip Adı',
type: Ext.data.Types.STRING,
clrType: 'String'
}, {
name: 'Id',
caption: 'Id',
type: Ext.data.Types.STRING,
clrType: 'Guid'
}, {
name: 'HizmetTip',
caption: 'HizmetTip',
type: Ext.data.Types.STRING,
clrType: 'String'
}, {
name: 'HizmetKod',
caption: 'Hizmet Kodu',
type: Ext.data.Types.STRING,
clrType: 'String'
}, {
name: 'HizmetAd',
caption: 'Hizmet Adı',
type: Ext.data.Types.STRING,
clrType: 'String'
}, {
name: 'Aciklama',
caption: 'Açıklama',
type: Ext.data.Types.STRING,
clrType: 'String'
}],
autoDestroy: false,
autoLoad: true,
autoSave: false,
sortInfo: {
field: 'HizmetAd',
direction: 'ASC'
},
restful: false,
proxy: {
type: 'ajax',
actionMethods: {
read: 'POST'
},
url: '/Yol/Combo/AlinanHizmet',
reader: {
type: 'json',
root: 'data',
idProperty: 'Id',
totalProperty: 'rowCount',
successProperty: 'success',
messageProperty: 'message'
}
},
data: []
})
},
filter: {
xtype: 'textfield'
},
renderer: function (value, metaData, record, rowIndex, colIndex, store) {
return record.get('HizmetAd');
}
}
【问题讨论】:
-
你试过
Ext.ComponentQuery吗?试试grid.query('#item_id')。 -
是的,它返回空数组。 “[]”
-
就是这样,只是列配置。还有更多,我不得不删除它的一些部分。