在datagrid中动态添加行

时间:2011-04-04 07:11:49

标签: flex actionscript-3 datagrid

我正在使用Flex4 mx:Datagrid,并尝试动态添加行。

在我的数据网格中,给定时间有n行。最后一行包含文本“单击以添加行”,即当用户单击此单元格时,单元格变为可编辑,用户可以添加数据。一旦他/她按下Enter键,就会自动添加一个新行,最后一个单元格再次包含“Click to add row”文本。我已经能够通过在“itemEditEnd”事件上更新datagrid的dataprovider来管理它。

我想解决的问题如下: 通常,当用户编辑列中的任何单元格并按Enter键时,下一行中的单元格将自动变为可编辑状态。但是,因为在我的情况下,当用户按Enter键时我正在刷新数据提供者,因此最后一项不会变得可编辑。我尝试了以下变通方法,但没有一个工作:

  1. 在updateCompete事件之后调用“createItemEditor”。
  2. 在“itemEditEnd”函数中定义一个计时器事件,并在计时器完成后调用“createItemEditor”。
  3. 我确信我在这里犯了一些愚蠢的错误,但找不到它。任何帮助都会非常感激。

    谢谢, 卡皮尔

2 个答案:

答案 0 :(得分:0)

我认为在创建新行或编辑行后,他总是可以编辑最后一行。您似乎没有刷新行的索引来设置可编辑。

答案 1 :(得分:0)

我找到了问题的解决方案。问题是“createItemEditor”的使用不正确。似乎正确的方法是使用“editedItemPosition”。修改此属性后,它会自动调度propertyChange事件。

所以,当我设置以下内容时,不是使用“createItemEditor”,那么事情就完全正常了:)

divisionNamesGrid.editedItemPosition = {columnIndex: cIndex, rowIndex: rIndex};                              

谢谢, 卡皮尔