Как получить тег <div>htmlText для переноса внутри AdvancedDataGridColumn - PullRequest
0 голосов
/ 01 сентября 2011

Для отображения текста в формате HTML в AdvancedDataColumn я использую пользовательский рендерер, который является объектом mx: Text.Я устанавливаю myText.htmlText на что-то вроде «тестовый текст, который действительно намного длиннее ширины столбца».Независимо от того, какие свойства я установил, текст просто выходит за пределы конца столбца.

Я пробовал wordWrap = "true" в сетке данных, а также в каждом отдельном столбце.Я также пытался связываться с css и пытался применить его к текстовому полю, но ничего не появляется.Кто-нибудь смог обернуть htmlText в текстовый объект?

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

- Правка - добавлен код рендерера.

<?xml version="1.0"?>
<!-- itemrenderers/sparkmx/myComponents/SummaryRenderer.mxml -->
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:s="library://ns.adobe.com/flex/spark"
    textAlign="center">

    <fx:Script>
        <![CDATA[
            import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;

            override public function set data(value:Object):void
            {
                // help for style sheets
                //http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/StyleSheet.html

                //create and initialize css
                var myCSS:StyleSheet = new StyleSheet();
                myCSS.setStyle("p", {textAlign:'left'});
                // TODO try wordwrap here.
                myCSS.setStyle("div", {textAlign:'left'});

                //ensure html support and apply css to it
                myText.styleSheet = myCSS;

                // if the value is null, it would throw an error.
                if (AdvancedDataGridListData(listData) != null) {
                    myText.htmlText = value[AdvancedDataGridListData(listData).dataField];
                }
            }
        ]]>
    </fx:Script>

    <mx:Text id="myText"/>
</s:MXAdvancedDataGridItemRenderer>

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

Я разобрался с первой частью. Похоже, что объект Text внутри ячейки был больше, чем ячейка, поэтому, несмотря на то, что он «оборачивал» текст, он думал, что в нем достаточно места.

Добавление в

myText.percentWidth=100;
myText.percentHeight=100;

чтобы функция установки данных решила эту проблему.

0 голосов
/ 02 сентября 2011

Возможности HTML в текстовом компоненте весьма ограничены. Вы не можете добавить теги Div там. Если у вас есть проблема - я бы сказал, что вам нужно установить фиксированную ширину либо в вашем текстовом компоненте в пользовательском рендерере, либо в AdvancedDatagridColumn. Извините, вы не получили последний вопрос о пробелах. Не могли бы вы объяснить с примером?

...