2011-02-11 73 views
2

這看起來應該很簡單,但我甚至找不到如何遍歷Flex DataGrid中的行。Flex DataGrid:以編程方式突出顯示行

基本上我試圖完成的是這樣的僞代碼:

for each(var row:Row in myDataGrid.Rows) 
{ 
    if(row.DataObject.Number == 1) 
    { 
     row.Color = Red; 
    } 
} 

我想有一個在被點擊或者處理保存保存按鈕,或凸顯無效行並彈出一條消息告訴用戶爲什麼這些行是無效的。由於其他一些複雜性,我無法驗證輸入的每一行。任何幫助表示讚賞!謝謝。

回答

2

數據網格旨在由其數據驅動,而不是直接操縱。完成你想要做的事情的一種方法是向你的提供者中的數據對象添加某種屬性,比如說「有效」,並向渲染器添加代碼,以基於「有效」狀態改變其外觀。通過這種方式,您可以循環訪問數據提供程序中的對象,並根據您的驗證檢查設置「有效」屬性,這將導致數據網格中的行自動更改其外觀。

希望有所幫助。

1

我不確定你可以在數據網格上做到這一點,但是如果你有每個項目的項目渲染器,那麼你可以在那裏設置高亮邏輯。

基本上,你定義你的DataGrid的項目渲染器類:
<mx:DataGrid itemRenderer="ItemRendererClass"(...) ></mx:DataGrid>

,然後你定義類 「ItemRendererClass」 作爲實施IDataRenderer:

implements="mx.core.IDataRenderer" 

這是一個簡單的解釋,假設你可以弄清楚如何自己做到這一點:)

1

我通過覆蓋設置的數據實現了這一點。我已經提供了下面的示例代碼。

override public function set data(value:Object):void 
    { 
     super.data=value; 
     if(value!=null && value.hasOwnProperty("state") && value.state == "Final State"){    
       setStyle("color", 0xb7babc); 
     }else{ 
      setStyle("color", 0x000000); 
     } 
     this.selectable=false; 
     super.invalidateDisplayList(); 
    } 
相關問題