我正在尝试将一些ExtJS 3.3转换为4.0。 在ExtJS 3.x中,我可以使用独特的组件ID创建一个组合框,稍后我可以使用Ext.getCmp(Id)来获取该组合编辑器,以便我可以添加过滤器,或者使用组合框本身。
现在,如果我指定一个Id,网格不会在网格中渲染组合框正确,他们说我必须使用itemId,然后实际上它工作,我的意思是组合在网格上正确渲染,但后来我有无法使用该itemId获取组合框本身。
我试过grid.getComponent(itemId),grid.headerCt.getComponent(),我不得不说这个项目到底有什么好处,我到底该如何得到这个编辑器。
grid.columns集合包含简单字段的编辑器(如文本,数字),对于组合框,它有getEditor,它要求将数据记录作为参数。
我不得不再说wtf,对于ExtJS 3.x是如此错误,以至于他们感觉像是在修理它们....它起来了。
真的,这次升级让我去了很多次......也许是我的错,但是wtf ......反正。
{
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');
}
}
答案 0 :(得分:0)
这已经过时了 - 但你试过grid.down('#item_id')
吗?
答案 1 :(得分:0)
mygrid.on('beforeedit', function(e){
if(e.field == 'ProductId') {
var gridCols = Ext.getCmp('my_grid').columns;
for(i = 0; i < gridCols.length; i++)
if (gridCols[i].dataIndex == 'ProductId') break;
var combo = gridCols[i].getEditor(e.record);
...
所以实际上column.getEditor(null)就可以了。