2010-05-17 3 views
0

Я пытаюсь понять, как управлять DataGrid на основе объекта XML, как это:Наполнение DataGrid с переменным числом столбцов и строк в Flex

<matrix rows="5" columns="5"> 
<column> 
    <row>0.5</row> 
    <row>0.21</row> 
</column> 
<column> 
    <row>0.6</row> 
    <row>0.9</row> 
</column> 
<column> 
    <row>0.5</row> 
    <row>0.5</row> 
</column> 
<column> 
    <row>0.8</row> 
    <row>0.4</row> 
</column> 
</matrix> 

мне нужно будет заполнить имена столбцов DataGrid основанный на другом объекте XML и использующий вышеуказанный XML для заполнения каждой из строк столбца. В настоящее время я могу создать Datagrid и заполнить его заголовки столбцов, но я не уверен, как добавить строки для каждого столбца. Вышеупомянутый XML будет обновляться с добавлением и удалением новых элементов строки и столбца. Это, конечно же, будет связано с Datagrid, чтобы показывать обновления.

+0

Это похоже на обычный подход ко мне; например, вы пытаетесь создать макет DataGrid в XML. Просто отправьте XML свои данные и дайте ему обработать макет. – JeffryHouser

+0

Есть ли способ установить DataField для DataGridColumn с использованием того же имени элемента XML (например, в примере выше)? – Mino

ответ

1

Обязательно ли верно, что данные строки являются дочерними элементами столбца? Сначала вам нужно будет преобразовать данные, если это так. DataGrid в Flex и Table в HTML основаны на соглашении баз данных со строками как с отдельными записями, а не с столбцами.

Если кому-то или чему-либо предоставили данные, они не согласны с этим, вы бы лучше манипулировали данными в соответствии с контролем вида, а не наоборот, и это то, что вы сейчас делаете.

+0

Благодарим за помощь. Я с тобой согласен. Я думал о заполнении datagrid столбцами, а не строками. Я нашел эту статью, которая действительно помогла мне: http://flexpearls.blogspot.com/2008/02/generating-dg-columns-for-xml-data.html Спасибо. :) – Mino

1

Строки datagrid будут динамическими. Он будет заполнен на основе количества элементов в поставщике данных. Но для того, чтобы сделать столбцы динамическими, вам нужно сделать это с помощью AS.

Datagrid имеет свойство «столбцы». это содержит объекты DataGridColumn для этого datagrid. Вы можете проверить dataprovider и добавить или удалить DatagridColumns в массив «columns».

var cols:Array = []; 
for(var i:int = 0;i<dataProvider.length;i++) 
{ 
    var DGCol:DataGridColumn = new DataGridColumn(); 
    DGCol.dataField = "data1"; 
    cols.push(DGCol); 
} 
myDg.columns = cols; 
Смежные вопросы