Возможна ли замена столбцов и строк гибкой таблицы данных? - PullRequest
0 голосов
/ 22 июля 2009

У меня есть 1 строка, множество столбцов flex datagrid. Я хотел бы повернуть dataGrid на бок, чтобы заголовки столбцов превратились в один столбец, работающий вниз и v.v.

Есть ли способ сделать это в DataGrid?

Или я застрял, манипулируя данными, представленными в сетке? Если да, то какова ваша рекомендация?

Основная идея здесь в том, что у меня есть такой объект:

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

И мне нужен элемент управления, визуально похожий на этот. В настоящее время сетка данных отображает объект как:

x b o u w
y u p e p

Что слишком горизонтально для моего случая. Thx

Ответы [ 2 ]

1 голос
/ 22 июля 2009

Установите в 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.

1 голос
/ 22 июля 2009

Я предполагаю, что вы хотите конвертировать ваши столбцы в один столбец это можно сделать, получив все столбцы и поместив массив 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;
        }

извините, я только что скопировал код, но я думаю, что он вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...