2011-06-01 174 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