在Spark DataGrid单元格上更改选定的TEXT颜色

时间:2012-05-23 01:38:02

标签: actionscript-3 flex flash-builder mxml

有没有人知道在Spark DataGrid中对所选文本应用样式的方法?

我认为最好的办法是让一个带有textarea的itemrenderer但之后,我不知道该怎么办。

如果选择了单元格,我的目标不是更改颜色标签。 实际上,在我的梦想中,项目是可编辑的,您只能在单元格内选择一些单词并将特定样式应用于所选文本部分(通过单击按钮,一个用于粗体,一个用于斜体...)。比,文本可以存储在数据库中,如html文本。

我想像使用RichTextEditor但没有ControlBar一样使用cell itemrenderer。就我而言,我想在datadgrid外面只有一个控制栏。

如果你能帮助我,我会很高兴。

由于

1 个答案:

答案 0 :(得分:2)

使用Spark的最佳方法通常是皮肤。

通过属性进行基本控制,例如更改所选颜色:

cell

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark">

    <s:DataGrid selectionColor="0xff0000">
        <s:dataProvider>
            <s:ArrayList>
                <fx:String>a</fx:String>
                <fx:String>b</fx:String>
                <fx:String>c</fx:String>
            </s:ArrayList>
        </s:dataProvider>
    </s:DataGrid>

</s:Application>

要为GridColumn实现项呈示器,请使用States定义所选状态的显示方式

cell-renderer

<强> GridColumnItemRenderer

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                    xmlns:s="library://ns.adobe.com/flex/spark"
                    xmlns:mx="library://ns.adobe.com/flex/mx"
                    clipAndEnableScrolling="true">

    <s:states>
        <s:State name="normal" />
        <s:State name="selected" />
    </s:states>

    <fx:Script>
        <![CDATA[
            override public function prepare(hasBeenRecycled:Boolean):void
            {
                lblData.text = data[column.dataField]
            }
        ]]>
    </fx:Script>

    <s:Label id="lblData"
             color.selected="0x00ff00"
             top="9"
             left="7" />

</s:GridItemRenderer>

<强>数据网格

上面的项目渲染器是从Spark GridColumn指定的,如:

<s:DataGrid>
    <s:columns>
        <s:ArrayList>
            <s:GridColumn itemRenderer="GridColumnItemRenderer" />
        </s:ArrayList>
    </s:columns>
</s:DataGrid>