我有点新的datagrids和spark,并且一直在用我的大脑来解决这个问题。我有一个正在加载XMLList的数据网格。一个字段是一个数值,它将被计算为另一个字段的时间,并且该结果将被存储并在网格中即时显示。Flex Spark Datagrid单元格1 *单元格2存储在单元格3中
例子:
XML
<SampleTable>
<Row>
<Item>Item 1</Item>
<Quantity>10</Quantity>
<Price></Price>
<Cost></Cost>
</Row>
</SampleTable>
所以用户会在价格进入,成本将与价格*数量值电网更新,与数据提供程序正在使用更新表单保存时的结果。
在网格中添加和XML已绑定。我可以简单地更新单元格的工作。我需要帮助确定在哪里做计算。只有价格是可编辑的,当单元格更改值时,我希望计算成本。
的处理程序编辑会话:
import spark.components.gridClasses.CellPosition;
import spark.events.GridEvent;
private var mouseDownRowIndex:int;
private var mouseDownColumnIndex:int;
protected function dataGrid_gridMouseDownHandler(event:GridEvent):void
{
mouseDownRowIndex = event.rowIndex;
mouseDownColumnIndex = event.columnIndex;
}
protected function dataGrid_gridMouseUpHandler(event:GridEvent):void
{
// Start a grid item editor if:
// - the rowIndex is valid
// - mouseUp is on the same cell and mouseDown
// - shift and ctrl keys are not down
// - cell is editable
// - an editor is not already running
// An editor may already be running if the cell was already
// selected and the data grid started the editor.
if (event.rowIndex >= 0 &&
event.rowIndex == mouseDownRowIndex &&
event.columnIndex == mouseDownColumnIndex &&
!(event.shiftKey || event.ctrlKey) &&
event.column.editable &&
!event.grid.dataGrid.itemEditorInstance)
{
event.grid.dataGrid.startItemEditorSession(event.rowIndex, event.columnIndex);
}
}
<s:DataGrid id="dgTest" x="10" y="68" width="900" editable="true" electionMode="singleCell" requestedRowCount="4" gridMouseDown="dataGrid_gridMouseDownHandler(event)" gridMouseUp="dataGrid_gridMouseUpHandler(event)">
<s:columns>
<s:ArrayList>
<s:GridColumn width="250" dataField="Item" headerText="Item" resizable="true" sortable="false" editable="false"></s:GridColumn>
<s:GridColumn width="160" dataField="Quantity" headerText="Quantity" resizable="false" sortable="false" editable="false"></s:GridColumn>
<s:GridColumn width="90" dataField="Price" headerText="Price" resizable="false" sortable="false" ></s:GridColumn>
<s:GridColumn width="90" dataField="Cost" headerText="Cost" resizable="false" sortable="false" editable="false"></s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
我看着gridItemEditorSessionSave事件,但我需要这些字段计算并显示在网格中,而不是在结束。我试图重现的功能就像电子表格一样。 – user1596429 2012-08-16 15:11:46
我的例子会给你一个电子表格的功能。电子表格只会在完成编辑单元格后重新计算公式。如果你真的想重新计算你的PercentComplete ItemRenderer的编辑,你可以尝试使用KeyDown Eventlistener(注册击键),但我个人建议不要这样做。 – 2012-08-16 18:55:50