2012-01-26 86 views
0

我正嘗試在FLEX中創建數據網格。麻煩的是我希望它是100%動態的 - 即列&數據。如何在flex中創建動態數據網格

基本上我需要通過數據庫查詢中的結果集來填充數據網格,這些數據將通過標準的java spring jdbc dao層來收集。該查詢與'select * from tablename'一樣通用,所以結果集可以從查詢變爲查詢。

我的計劃是將這個結果集轉換成某種形式的java對象,我最初的想法是某種類型的Map,它將包含行的列名和值。

Im我正在掙扎的是我需要將這個結果集轉換成一個ActionScript對象(通過graniteds),然後我可以使用它來填充數據表。

我見過很多關於如何動態添加列到數據網格的示例,並通過數據字段對象綁定數據 - 但是我堅持如何做到這一點,如果我不知道有多少列我將擁有或列名將是什麼。

希望這是有道理的。

感謝

回答

1

如果你知道,如何動態創建列,那麼是什麼原因導致你被卡住?
從數據庫中提取值。將結果轉換爲ArrayList<Map>。然後在actionscript中它將被映射到ArrayCollection(Object)。由於集合中的每個對象將具有相同的結構(屬性),你可以輕鬆地創建數據網格:

public function resultEventHandler(event:ResultEvent) { 
    var res:ArrayCollection=event.result; 
    if (!res || res.length == 0) 
     return; 
    var dg:DataGrid=new DataGrid(); 
    var typicalObj:Object=res.getItemAt(0); 
    var columns:Array=[]; 
    //iterate through object properties 
    for (var prop:String in typicalObj) { 
     //set header text and dataField for new column 
     var c:DataGridColumn=new DataGridColumn(prop); 
     columns.push(c); 
    } 
    dg.columns=columns; 
    dg.dataProvider=res; 
    //add your datagrid on stage, do it as you need 
    view.addElement(dg); 
} 
+0

注意,這個例子是'MX datagrid',如果你想使用的火花,列應該是'的ArrayCollection ',只是一個觀察。 – randomUser56789