2011-06-01 176 views
0

我需要将实时数据推送到一个Flex GUI(数据网格),但每当新数据被推送到网格时,它就失去了先前的状态。具有动态数据更新的Flex组件

例子:

  1. 如果我滚动到右侧,下一次更新滚动回到初始位置,也就是离开
  2. 如果我选择任何一行之后,它变得未选中刚过更新。

有没有办法维持国家?我正在使用Flex 3。如果有帮助,我可以移动到Flex 4

回答

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(); 
} 

请忽略/正确任何错字..因为我没有测试此:))

祝你好运!

+0

谢谢......它在简单的数据网格中工作。 但它不适用于高级数据网格的情况。我认为这是因为分组收集。 – Akhil 2011-06-01 08:53:21

+0

您可以发布有关如何更新ADG的代码吗? – 2011-06-01 10:15:38