2014-12-22 1 views
1

Я пытаюсь создать редактор с сеткой и теперь у меня есть такой вариант:Как создать редактор ячейки для специальной ячейки в сетке с другой сеткой и выбор значения из нее в ExtJs?

var panelWithGrid = Ext.create('Ext.grid.Panel', { 
    store: cellEditorGridStore, 
    autoScroll: true, 
    width: 300, 
    height: 200, 
    sortable: true, 
    title: "My Editor", 
    ... 
    columns: [ 
     { 
      dataIndex: "first", 
      width: "13%", 
      text: "First" 
     }, 
     { 
      dataIndex: "second", 
      width: "87%", 
      text: "Second" 
     } 
    ], 
    bbar: [ 
     { 
      xtype: "button", 
      text: "change value of cell", 
      handler: function(){ 
       //close action + inserting of selected value from one grid to another? 
      } 
     }, 
     { 
      xtype: "button", 
      text: "close editor", 
      handler: function(){ 
       //normal close action? tried to hide, that works bad. 
      } 
     } 
    ] 
}); 
var myOwnCellEditor = Ext.create('Ext.grid.CellEditor', { 
    autoCancel: true, 
    closeAction: 'hide', 
    field: panelWithGrid 
}); 

Кроме того, я создал еще одну сетку с атрибутом GetEditor в одном из всех столбцов

... 
getEditor: function(record){ 
    if(record.raw.myColumnIndex==="gridEditor"){ 
     Ext.Ajax.request({ 
      ... 
      async: false, 
      success: function(response, options){ 
       ...//downloading of cellEditorGridStore 
      } 
    } 
    return myOwnCellEditor; 
} 

Так у меня есть несколько проблем с таким редактором. Когда я нажимаю на ячейки для редактирования У меня есть ошибка:

Uncaught TypeError: undefined is not a functionext-all.js:38 
Ext.define.startEditext-all.js:38 
Ext.define.showEditorext-all.js:38 
b 

При попытке скрыть редактор, он не показан правильно второй раз. Вы знаете лучший способ реализовать такой редактор?

ответ

2

Я нашел другой способ создания виджета для получения значения из другой сетки. добавить к моей сетке

listeners: { 
    cellclick: function(gridView,htmlElement,columnIndex,dataRecord){ 
     if(columnIndex == 1){ 
      if(dataRecord.data.second){ 
       ... 
       //memorize current dataRecord to change value by using of 
       //dataRecord.set("second", new_value) and show my grid-editor 
      } 
     } 
    }) 
} 

Такое решение работает довольно хорошо, но это не редактор.

Смежные вопросы