如何获取<div>标记htmlText以包装在AdvancedDataGridColumn </div>中

时间:2011-09-01 17:42:29

标签: html css flex advanceddatagrid

要在AdvancedDataColumn中显示HTML格式的文本,我使用的是自定义渲染器,它是一个mx:Text对象。我正在将myText.htmlText设置为“测试文本,其实际上比列宽度长得多”。无论我设置了什么属性,文本都会在列的末尾运行。

我在dataGrid和每个单独的列上尝试了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 :(得分:0)

Text组件中的HTML可能性非常有限。你无法在那里添加div标签。对于您遇到的问题 - 我想说您需要在自定义渲染器中的Text组件或AdvancedDatagridColumn上设置固定宽度。 对不起,没有告诉你关于空白的最后一个问题。你能用例子解释一下吗?

答案 1 :(得分:0)

我想出了第一部分。看起来单元格中的Text对象比单元格大,所以即使它“包裹”文本,它也认为它有足够的空间。

添加

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

设置数据功能解决了这个问题。

相关问题