2015-11-19 3 views
0

Я использую искру DataGrid. Я хочу, чтобы эмуляция Excel Behavior = Когда выбрана одна ячейка, и пользователи начинают вводить на клавиатуре, выбранные ячейки переходят в режим редактирования. Я сделал это, начав gridItemEditorSession на 1-ом случае KeyDown, но проблема у меня в том, что после того, как начальное значение gridItemEditorSession в ячейке выбирается таким образом, второй KeyDown удаляет 1-ый KeyDown характер;/Spark DataGrid выбрана редактирование ячейки на keyDown

Вот демо: Просто выберите любую ячейку и начало :

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark"> 
    <fx:Script> 
     <![CDATA[ 
      private function onKeyDown():void 
      { 
       trace(dataGrid.grid.anchorRowIndex) 
       trace(dataGrid.grid.caretRowIndex) 

       dataGrid.startItemEditorSession(dataGrid.grid.anchorRowIndex, dataGrid.grid.anchorColumnIndex) 
      } 

      private function onGridRollOver():void 
      { 

      } 
     ]]> 
    </fx:Script> 

    <s:DataGrid id="dataGrid" requestedRowCount="5" width="350" editable="true" 
     height="300" selectionMode="multipleCells" keyDown="onKeyDown()" 
     gridRollOver="onGridRollOver()"> 
     <s:ArrayCollection> 
       <s:DataItem key="1000" name="Abrasive" price="100.11" call="false"/> 
       <s:DataItem key="1001" name="Brush" price="110.01" call="true"/> 
       <s:DataItem key="1002" name="Clamp" price="120.02" call="false"/> 
       <s:DataItem key="1003" name="Drill" price="130.03" call="true"/> 
       <s:DataItem key="1004" name="Epoxy" price="140.04" call="false"/> 
       <s:DataItem key="1005" name="File" price="150.05" call="true"/> 
       <s:DataItem key="1006" name="Gouge" price="160.06" call="false"/> 
       <s:DataItem key="1007" name="Hook" price="170.07" call="true"/> 
       <s:DataItem key="1008" name="Ink" price="180.08" call="false"/> 
       <s:DataItem key="1009" name="Jack" price="190.09" call="true"/>    
      </s:ArrayCollection> 
     </s:DataGrid> 
</s:Application> 
+0

Я вижу, что могу изменить значение в ячейке, как ожидалось. Не могли бы вы рассказать о своей проблеме более подробно? – gbdcool

ответ

1

Я не слишком знакомый с Flex, но похоже, что у вас проблема с обработкой строк. Что-то вроде

private function handleKeydown(e:KeyboardEvent):void 
{ 
    output_txt.text = String.fromCharCode(e.charCode); 
} 

вместо

private function handleKeydown(e:KeyboardEvent):void 
{ 
    output_txt.appendText(String.fromCharCode(e.charCode)); 
} 

Убедитесь, что вы добавления ввода в текст вместо замены.

+0

Это внутренняя реализация DataGrid, поэтому у меня нет доступа к экземпляру textField;/SO, реальный вопрос - это обход этого «внутреннего» поведения в искровом DataGrid. –

+0

Найти метод в api, который позволит вам добавить текст, отправить его во все сразу, создав искусственное текстовое поле над ячейкой и отправив его на клавишу 13 или перепиши внутренности: P – quantomworks

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