2009-07-22 35 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

相关问题