Flex искровая сетка данных и перенос слов - PullRequest
0 голосов
/ 18 ноября 2011

Я хотел бы иметь сетку данных искры, которая переносит все строки, где это уместно. На данный момент кажется, что ширина ячейки зависит от содержимого первой строки, а затем последующие строки переносятся словами. Например:


1_ Если столбец 1 имеет первую строку

abcde fghij

и второй ряд abcde fghij klmnop

эта вторая строка будет завернута в слово.


2_ Если столбец 1 имеет первую строку

abcde fghij klmnop

и второй ряд abcde fghij

не будет переноса слов, а столбец 1 будет шириной abcde fghij klmnop


То, что я хочу, - это иметь сетку данных, которая подходит к контейнеру и, где это уместно, переносить строки по словам.

Пока мой код

<fx:Script><![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;

private function contentCreationCompleteHandler(event:FlexEvent):void {
    var dyna1:Object = { name: "John", description: "abcde fghij klmno pqrst uvwxyz abcde fghij klmno pqrst uvwxyz abcde fghij klmno pqrst uvwxyz "};
    var dyna2:Object = { name: "Richard", description: "abcde fghij klmno pqrst uvwxyz abcde fghij klmno pqrst uvwxyz " };
    var dyna3:Object = { name: "Peter", description: "abcde fghij klmno pqrst uvwxyz " };
    grid.dataProvider = new ArrayCollection([dyna2, dyna1, dyna3]);
}
]]></fx:Script>

<s:DataGrid id="grid" width="100%" height="100%" variableRowHeight="true">
<s:columns>
    <s:ArrayList>
        <s:GridColumn headerText="name" width = "100" dataField="name"/>
        <s:GridColumn headerText="description" dataField="description"/>
    </s:ArrayList>
</s:columns>
</s:DataGrid>

Я указываю, что ширина сетки данных равна 100%, а ширина контейнера - 400. Размер контейнера можно изменить, поэтому я хочу, чтобы описание заполнило доступное пространство. Когда приложение открывается, появляется полоса прокрутки, и вся сетка данных шире, чем 400. Я надеялся, что сетка данных останется на 400 и будет соответственно переноситься по словам.

Если я перемещу порядок, объекты будут добавлены в поставщик данных, у меня будут другие результаты. Я устанавливаю для variableRowHeight значение true, чтобы включить перенос слов, как подробно описано в этой превосходной статье. http://hansmuller -flex.blogspot.com / 2011/05 / контрольно-текста оберточной в-datagrid.html

Как я могу заставить таблицу данных динамически изменять размер до 100% ширины контейнера и чтобы перенос по словам происходил во всех строках? (не только строки после строки 1)

Заранее спасибо

1 Ответ

2 голосов
/ 12 января 2012

У меня была та же проблема с ошибкой первой ширины строки, и после многих часов копания, наконец, наткнулся на ответ, чтобы исправить ширину первой строки в нескольких блогах.

Вам в основном нужно установить«typItem» в сетке данных или иначе «Spark Datagrid» будет автоматически использовать первую строку для определения ширины:

«Типовой элемент DataGrid» используется для вычисления начальной ширины каждого GridColumn, который не указываетявная ширина.

Вот пример DataGrid, который задает типичный элемент.

<s:DataGrid id="dataGrid" requestedRowCount="5" verticalCenter="0" horizontalCenter="0">
    <s:typicalItem>
        <s:DataItem key="99999" name="Typical Item" price="123.45" call="false"/>
    </s:typicalItem>

    <s:ArrayCollection id="items">
        <s:DataItem key="1000" name="Abrasive" price="100.11" call="false"/>
        <s:DataItem key="1001" name="Brush" price="110.01" call="true"/>
        ...
    </s:ArrayCollection>
</s:DataGrid>

Для получения дополнительной информации, проверьте эти ссылки:

...