2014-10-07 4 views
0

Я работаю над небольшим приложением, где я хочу добавить новую строку в один столбец EditorGridPanel, и каждый раз, когда добавляется новая строка, я хочу, чтобы она быть в режиме редактирования, чтобы пользователь мог сразу же записать требуемый текст.Как начать редактирование новой строки/столбца, добавленной в сетку сразу

Соответствующий код из a complete jsfiddle:

store = new Ext.data.ArrayStore({ 
     autoDestroy: true, 
     storeId: 'myStore', 
     idIndex: 0, 
     fields: [ 
      { name: 'group', type: 'string' } 
     ], 
     data: [], 
     listeners: { 
      add: function(t, records, index) { 
       // This call causes problems 
       grid.startEditing(index, 0); 
      } 
     } 
    }); 

Когда add события в магазине запускается, который должен быть после была добавлена ​​запись, кажется, она до сих пор не была добавлена ​​к фактическому сетка, только магазин. Это вызывает ошибку в компоненте сетки.

Есть ли другое событие, возможно, в компоненте сетки, которое можно использовать вместо этого?

ответ

1

Это всего лишь вопрос времени. Вы пытаетесь добавить сетку, когда добавляете запись в магазин, и для синхронизации двух вещей требуется немного времени. Вы должны попробовать поместить свой код в обработчик события rowinsertedgrid.getView().

Для вашего кода, чтобы работать так, как вы его прямо сейчас, просто изменить его на:

store = new Ext.data.ArrayStore({ 
    autoDestroy: true, 
    storeId: 'myStore', 
    idIndex: 0, 
    fields: [ 
     { name: 'group', type: 'string' } 
    ], 
    data: [], 
    listeners: { 
     add: function(t, records, index) { 
      Ext.defer(function() { 
       grid.startEditing(index, 0); 
      },10); 
     } 
    } 
}); 

Doing это даст достаточно времени для информации между магазином и сеткой, чтобы быть в синхронизации.

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