Новая строка сетки с фокусом

#apache-flex #flex3

#apache-flex #flex3

Вопрос:

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

Моя сетка:

   <mx:DataGrid id="myGrid"
      dataProvider="{initDG}" editable="true"
      itemFocusOut="onItemFocusOut(event)">
      <mx:columns>
          <mx:DataGridColumn dataField="Company" editable="false"/>
          <mx:DataGridColumn dataField="Contact"/>
      </mx:columns>
  </mx:DataGrid>
  

Мое событие onItemFocusOut:

       protected function onItemFocusOut(e: DataGridEvent):void{
        if((e.rowIndex == (initDG.length - 1)) amp;amp; 
           (e.columnIndex == (myGrid.columnCount -1))){
          initDG.addItem({Company: 'New one', Contact: ''});
        }
      }
  

Это работает нормально, то есть вставляет новую строку. Проблема в том, что flex фокусируется на следующем компоненте, а мне нужно, чтобы он фокусировался на недавно созданной строке.

Возможно ли это?

Спасибо

Комментарии:

1. У вас была возможность попробовать ответ, который я опубликовал? Если это поможет решить вашу проблему, вы можете повысить ее, нажав на стрелку ^ и пометить как принятый ответ, нажав на значок галочки рядом с моим ответом.

Ответ №1:

На вашем месте я бы этого не делал. Tab — это очень хорошо известное сочетание клавиш для перехода к следующей ячейке или следующей строке, если находится в последней ячейке. Удаление этой функциональности затруднит стандартную функциональность.

С учетом сказанного, если вы хотите это сделать, вы можете либо попытаться «перехватить» событие keyboard и выполнить «stopImmediatePropogation ()» для события, либо вы можете расширить DataGrid, чтобы добавить свою собственную функциональность для вкладки.