2011-07-17 72 views
1

我有一個顯示產品詳細信息的數據網格。對於某一特定產品,我需要顯示其Id狀態(可用/不可用)以及它屬於哪個類別。類別部分與它看起來有些不同。在Flex中使用動態列呈現數據網格

產品A可以屬於類別A,B和C,而產品B屬於A,c和D等等。該表的結構將類似於

enter image description here

類別列從數據庫中檢索,並作爲參數動態構造DataGrid中列通過。

我已經在UI上定義了以下數據結構來處理這個問題。

Product{ 
var productId:String; 
var productName:String; 
var status:String; 
var categoryList:ArrayCollection; 
} 

我不確定這是否能解決我的問題。 我想我需要有一個包含類別名稱的地圖,如果它適用於該產品。

有關如何獲取此數據網格的任何指針都會非常有用。

回答

2

在一般情況下,解決你的問題,你會需要創建另一個數據結構網絡化:

Category{ 
var id:Number; 
var name:String; 
} 

之後,你將需要延長的DataGridColumn。給它添加「category」屬性。 生成列將是這樣的:

for each(var category:Categoty in categories){ 
var column:CategoryDataGridColumn = new CategoryDataGridColumn(); 
column.category = category; 
column.itemRenderer = CategoryItemRenderer; 
datagrid.columns.push(column); 
} 

CategoryItemRenderer將擴大基本的DataGrid項目渲染器。將有這樣的事情:

override protected function commitProperties():void 
{ 
super.commitProperties(); 
if(_dataChanged) 
{ 
    _dataChanged = false; 
    text = getText(); 
} 
} 

private function getText():String 
{ 
var result:String = 「Not Belongs」 
var columnCategory:Category = CategoryDataGridColumn(listData.owner.columns[listData.columnIndex]).category; 
for each(var category:Category in Product(data).categoriesList) 
{ 
    if(columnCategory.id == category.id) 
    { 
    result = 「Belongs」; 
    break; 
    } 
} 
return result; 
} 
+0

謝謝草,我得到這個工作:) – Arun