具有动态数据更新的Flex组件

时间:2011-06-01 05:13:59

标签: flex dynamic datagrid

我需要将实时数据推送到Flex GUI(数据网格),但每次将新数据推送到网格时,它都会失去以前的状态。

示例:

  1. 如果我向右滚动,则在下次更新后滚动回到默认位置,即左侧
  2. 如果我选择任何一行,则会在更新后立即取消选择。
  3. 有没有办法维持这个状态?

    我正在使用Flex 3。如果有帮助,我可以转到Flex 4

1 个答案:

答案 0 :(得分:0)

您如何设置数据?您是否使用新的对象集合更改DataGrid dataProvider?因为,根据你所描述的行为,可能就是这种情况。

解决方案是改变DG的dataProvider。每次,您应该只更新分配为数据提供者的集合中的值。

例如,

[Bindable]
var myDataCollection:ArrayCollection = new ArrayCollection([0,1,2,3,4]);

// Handle creation complete.
private function onCreationComplete():void
{
   initDG();
}

// Init DG data provider just once.
private function initDG(data:ArraCollection):void
{
   myDG.dataProvider = data;
}

private function updateDG_Method_1(row:int, value:int):void
{
    var data:ArrayCollection = myDG.dataProvider as ArrayCollection;

    if(data && data.length > row)
    {
        data[row] = value;
    }

    // We can force refresh if not not done automatically.
    myDG.invalidateList();
    myDG.validateNow();
}

private function updateDG_Method_2(row:int, value:int):void
{
    if(myDataCollection && myDataCollection.length > row)
    {
        myDataCollection[row] = value;
    }

    // We can force refresh if not not done automatically.
    myDG.invalidateList();
    myDG.validateNow();
}

请忽略/更正任何拼写错误..因为我没有测试过这个:))

祝你好运!