2012-01-31 7 views
0

Я пытаюсь преобразовать некоторые ExtJS 3.3 в 4.0. В ExtJS 3.x я мог бы создать combobox с уникальным идентификатором компонента, который я мог бы использовать позже с Ext.getCmp (Id), чтобы получить этот комбо-редактор, чтобы я мог добавлять фильтры или играть с самим списком ,Extjs4 itemId, как вернуть редактор столбцов combobox

Теперь, если я укажу Id, сетка не отображает поле со списком в сетке, они говорят, что я должен использовать itemId вместо этого, тогда на самом деле это работает, я имею в виду, что комбо корректно отображается на сетке. Но тогда я не имеют возможности использовать этот элемент item, чтобы получить сам combobox.

Я попробовал grid.getComponent (itemId), grid.headerCt.getComponent(), я должен сказать, что это за штука, для меня хорошо, как я должен получить этот редактор.

В коллекции grid.columns есть редактор для простых полей (например, текст, число), для combobox у него есть getEditor, который запрашивает запись данных в качестве параметра.

Должен сказать еще раз wtf, было так неправильно с ExtJS 3.x, что они чувствовали себя как фиксация и f .... это вверх.

Действительно, это обновление заставило меня пойти wtf столько раз ... возможно, это моя вина, но 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

Вы пробовали 'Ext.ComponentQuery'? Попробуйте 'grid.query ('# item_id')'. – Krzysztof

+0

Да, он возвращает пустой массив. "[]" – hazimdikenli

+0

Можете ли вы опубликовать исходный код? – Krzysztof

ответ

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) делает трюк.

+0

Я не знаю, являются ли столбцы смешанной коллекцией или массивом или чем-то еще, поэтому у меня есть цикл for. – hazimdikenli

0

Это старый - но вы пробовали grid.down('#item_id')?