【问题标题】:Is swapping the columns and rows of a flex datagrid possible?是否可以交换 flex 数据网格的列和行?
【发布时间】:2009-07-22 05:33:08
【问题描述】:

我有一个 1 行、多列的 flex 数据网格。我想把dataGrid放在一边,这样列标题就变成了一个向下运行的单列并且v.v.

有没有办法在 DataGrid 中做到这一点?

或者我是否卡在操纵呈现给网格的数据?如果有,你有什么建议?

这里的主要思想是我有一个像这样的对象:

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

我想要一个在视觉上与之相似的控件。目前数据网格将对象显示为:

x b o u w
y u p e p

这对我来说太水平了。谢谢

【问题讨论】:

    标签: apache-flex datagrid


    【解决方案1】:

    我假设您想将列转换为单列 这可以通过获取所有列并将 in 数组作为数据提供者提供来完成。

    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;
            }
    

    抱歉,我只是复制了代码,但我认为它会对您有所帮助。

    【讨论】:

      【解决方案2】:

      将 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 类型的新实例,并将 name 和 value 动态属性分配给它们各自的值。取而代之的是,您可能希望定义自己的具有可绑定属性的类。请注意,属性名称仅用于此示例,因为我不知道您实际使用的是什么。

      此时的数据网格应该有两列由您定义,并相应设置它们的 dataField 属性。此外,此示例假定 columnSet 集合包含您希望垂直显示的“水平列”。如果你可以根据 originalDataset 中的值获取这些,你甚至可能不需要 columnSet。

      【讨论】:

      • 我如何循环执行该操作?
      猜你喜欢
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2011-08-09
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多