2009-07-22 32 views
0

我有1行,許多列flex數據網格。我想將dataGrid放在一邊,以便列標題成爲一個單獨的列,並運行v.v.是否可以交換flex數據網格的列和行?

有沒有辦法在DataGrid中做到這一點?

還是我堅持操縱提交給網格的數據?如果是的話,你的建議是什麼?

這裏的主要想法是我有一個對象,如:

x=y 
b=u 
o=p 
u=e 
w=p 

而且我想控制是視覺上相似。目前datagrid顯示對象爲:

x b o u w 
y u p e p 

這對我的情況來說太水平了。 Thx

回答

1

我認爲你想要將你的列轉換爲單列 這可以通過獲取所有列並將數組放在數組中作爲數據提供者來實現。

DataGrid.columns 

將返回列。

你可以做一些這樣的想法來創建列。

public function createColumns():Array{ 
      var advancedDataGridColumn:AdvancedDataGridColumn; 
       var i:int; 
       var columnsArray:Array = new Array(); 
        for(i=0;i<columns.length;i++){      
           advancedDataGridColumn=new AdvancedDataGridColumn();   
           advancedDataGridColumn.headerText=columns[i].dispheader.toString(); 
           advancedDataGridColumn.dataField="@"+columns[i].name.toString();         
           advancedDataGridColumn.itemRenderer=new ClassFactory(Styler);        
           if(columns[i].descending!=undefined){ 
            if(columns[i].descending.toString()=="true") 
             sortField = new SortField("@"+columns[i].name.toString(),false,true,null); 
            else 
             sortField = new SortField("@"+columns[i].name.toString(),false,false,null); 
           } 

           if(advancedDataGridColumn.headerText == Constants.price|| 
           advancedDataGridColumn.headerText == Constants.quantity|| 
           advancedDataGridColumn.headerText == Constants.askPrice|| 
           advancedDataGridColumn.headerText == Constants.bidPrice|| 
           advancedDataGridColumn.headerText == Constants.netAmount|| 
           advancedDataGridColumn.headerText == Constants.interestAmount|| 
           advancedDataGridColumn.headerText == Constants.principalAmount|| 
           advancedDataGridColumn.headerText == Constants.accruedInterestAmount){ 
            var currencyFormattor:CurrencyFormatter = new CurrencyFormatter(); 
            currencyFormattor.useThousandsSeparator=true; 
            currencyFormattor.currencySymbol=""; 
            currencyFormattor.thousandsSeparatorFrom=","; 
            currencyFormattor.thousandsSeparatorTo=","; 
            advancedDataGridColumn.formatter=currencyFormattor; 
           }       

           columnsArray.push(advancedDataGridColumn); 
         } 
      return columnsArray; 
     } 

對不起,我剛剛複製了代碼,但我認爲它會幫助你。

1

將DataGrid設置爲只有2列,並將原始數據集轉換爲{propName,propValue}的數組集合。

假設你有:

var originalDataSet : ArrayCollection; 
var dataSet : ArrayCollection; 
var columnSet : ArrayCollection; 

一旦你的原始值,你會做這樣的事情:

dataSet = new ArrayCollection(); 

for (var i : int; i < originalDataSet.length; i++) 
{ 
    dataSet.addItem({name : columnSet.getItemAt(i), value : originalDataSet.getItemAt(i)}); 
} 

myDataGrid.dataProvider = dataSet;//set the data provider of the grid to the transformed data set. 

澄清:

{name : columnSet.getItemAt(i), value : originalDataSet.getItemAt(i)} 

這將創建一個新的Object類型的實例,並將名稱和值動態屬性分配給它們各自的值。相反,你可能想用可綁定的屬性來定義你自己的類。請注意,屬性名稱僅用於此示例,因爲我實際上不知道您在處理什麼。

該點的數據網格應該有兩個由您定義的列,並且相應地設置它們的dataField屬性。此外,此示例假定columnSet集合包含要垂直顯示的「水平列」。如果您可以根據originalDataset中的值獲取這些值,則可能甚至不需要columnSet。

+0

我該如何循環來做到這一點? – mrjrdnthms 2009-07-22 16:42:35

相關問題