我正在使用Flex并试图将数据网格火花垂直而不是水平地切换到标签。
var hBox:HBox = new HBox();
var templateDataGrid:spark.components.DataGrid = new spark.components.DataGrid();
templateDataGrid.dataProvider = dataGridList;
templateDataGrid.columns = columnHeaders;
templateDataGrid.sortableColumns = false;
templateDataGrid.editable = true;
hBox.addElement(templateDataGrid);
有一个非常简单的as3实现,我在HBox中渲染。
以下是API的完整工作示例,我在as3而不是mxml中编写网格,但我可以翻译。
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:Panel title="Spark DataGrid Control Example which demonstrates the variableRowHeight and rowHeight properties"
width="75%" height="75%"
horizontalCenter="0" verticalCenter="0">
<s:controlBarContent>
<s:HGroup verticalAlign="baseline">
<s:CheckBox label="variableRowHeight={dataGrid.variableRowHeight}" selected="@{dataGrid.variableRowHeight}"/>
<s:Label text=" "/> <!-- blank space -->
<s:HSlider minimum="12" maximum="120" value="@{dataGrid.grid.rowHeight}"/>
<s:Label text="rowHeight={dataGrid.grid.rowHeight}"/>
</s:HGroup>
</s:controlBarContent>
<s:DataGrid id="dataGrid" left="5" right="5" top="5" bottom="5" editable="true">
<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:Panel>
</s:Application>
如果您想要查看网格,可以在api here中看到网格示例,并且可以看到比标签水平移动时的网格示例。我希望它垂直移动!
答案 0 :(得分:0)
这是我到目前为止所拥有的。它适用于当人释放tab键时,它会查看它们的位置,并转到不同的位置。 (在我的情况下是一个。)内置选项卡导航发生在KEY_DOWN
上,这发生在KEY_UP
上。因此,所选项目反弹可能不是最好的。这适用于GridSelectionMode.SINGLE_CELL
。
myGrid.addEventListener(KeyboardEvent.KEY_UP, selectionChangingHandler);
private function selectionChangingHandler(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.TAB){
var selectedCell:CellPosition = event.currentTarget.selectedCell;
var columnLength = event.currentTarget.grid.columns.length;
var rowLength = event.currentTarget.grid.dataProvider.length;
var columnIndex:Number = selectedCell.columnIndex;
var rowIndex:Number = selectedCell.rowIndex+1;
if(rowLength == rowIndex){
if(columnIndex == columnLength-1){
columnIndex = 0;
rowIndex = 0;
}else{
columnIndex = columnIndex+1;
rowIndex = 0;
}
}
var success:Boolean = event.currentTarget.startItemEditorSession(rowIndex,columnIndex);
event.currentTarget.setSelectedCell(rowIndex,columnIndex);
}
}