2011-11-18 1 views
0

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


1_ Если в колонке 1 имеет первый ряд

ABCDE FGHIJ

и второй ряд ABCDE FGHIJ^МNОР

эта вторая строка будет переноситься по словам ,


2_ Если в колонке 1 имеет первый ряд

ABCDE FGHIJ^МNОР

и второй ряд 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> 

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

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

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

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

+0

Я попытался изменить DataGrid начальную строку , которая включает в себя указание horizontalScrollPolicy но это тоже не работает. – RNJ

ответ

2

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

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

typicalItem В 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> 

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

+0

wow большое спасибо jnova. Я снова столкнулся с этой проблемой и разочаровывался. Я проверю ваш ответ – RNJ

+0

Только что закончил проверку этого. Большое спасибо! Это действительно помогло мне – RNJ

+0

Это работает, за исключением случаев, когда вы не знаете, какими будут данные. – SZH