У меня есть DataGrid
с MXDataGridItemRenderer
, примененным как itemEditor
к одному из столбцов. Редактор включает в себя элемент управления spark.components.TextArea
.
По умолчанию любой редактор текстовых элементов сетки данных закрывается при нажатии клавиши [enter].
Помня об этом; Что я хочу сделать, это:
- Предотвратить закрытие редактора по клавише [SHIFT + ENTER], но принять перенос строки (я могу это сделать, см. Код ниже)
- Закройте редактор клавишей [ENTER], но не принимайте перенос строки (не удалось этого достичь)
Вот текущий код в MXDataGridItemRenderer
:
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
focusEnabled="true"
>
<fx:Script>
<![CDATA[
protected function onTxtDataKeyDown(event:KeyboardEvent):void
{
if (event.keyCode == 13)
{
if (event.shiftKey)
{
//Prevent editor from closing on [SHIFT+ENTER] key but accept the linebreak
event.stopImmediatePropagation(); // » works
}
else
{
//Close the editor on [ENTER] key but do not accept the linebreak
event.preventDefault(); // » does not work
}
}
}
]]>
</fx:Script>
<s:TextArea id="txtData" paddingTop="3" lineBreak="explicit"
text="{dataGridListData.label}"
verticalScrollPolicy="auto" horizontalScrollPolicy="off"
keyDown="onTxtDataKeyDown(event)"
/>
Я также попробовал событие textInput
, но это не сработало.
Итак: Как я могу предотвратить разрыв строки при закрытом редакторе по клавише [enter] ?
Любая помощь приветствуется. Спасибо.
РЕДАКТИРОВАТЬ: Если я изменю spark.components.TextArea на mx.controls.TextArea, вторая часть с event.preventDefault()
будет работать, как и ожидалось, но тогда первая часть, где SHIFT + ENTER принимает разрыв строки, будет не работает.