Actionscript 3 如何在ActionScript 3.0中将格式应用于数据馈送AdvancedDataGrid

Actionscript 3 如何在ActionScript 3.0中将格式应用于数据馈送AdvancedDataGrid,actionscript-3,formatting,advanceddatagrid,htmltext,Actionscript 3,Formatting,Advanceddatagrid,Htmltext,我正在使用Halo AdvancedDataGrid组件,其中每个列的默认itemEditor是mx.controls.TextInput 例如,数据提供程序是: [编码][可装订] 私有变量labelsGridArray:Array=[{tag:“apple”},{tag:“*banana”},{tag:“carrot”}];[/CODE] AdvancedDataGrid的定义是: [代码][代码] 如果dataprovider数组中的字符串前面有一个星号(如本例中香蕉的情况),则该字符串需

我正在使用Halo AdvancedDataGrid组件,其中每个列的默认itemEditor是mx.controls.TextInput

例如,数据提供程序是: [编码][可装订] 私有变量labelsGridArray:Array=[{tag:“apple”},{tag:“*banana”},{tag:“carrot”}];[/CODE] AdvancedDataGrid的定义是: [代码][代码]

如果dataprovider数组中的字符串前面有一个星号(如本例中香蕉的情况),则该字符串需要用方括号括起来,并以灰色显示

我试着做到以下几点: [守则] 一位同事告诉我如何使用AdvancedDataGridColumn的labelFunction属性。我尝试过,但无法执行以下赋值(列的id为“tag”): [CODE]tag.itemEditor.htmlText=格式化文本;[/CODE]

通过静态类型为mx.core:IFactory的引用访问可能未定义的属性htmlText时出错

我试图显式地提取TextInput itemEditor(就像我对覆盖集数据所做的那样)并使用labelFunction,但我无法使两者都在正确的范围内

非常感谢你的帮助,
Bonnie

尝试创建自己的itemRenderer/itemEditor

这将是您的数据网格:

<fx:Script>
    <![CDATA[
        [Bindable] private var labelsGridArray:Array = [ { tag:"apple" }, { tag:"*banana" }, { tag:"carrot" } ];
    ]]>
</fx:Script>
<mx:DataGrid dataProvider="{labelsGridArray}" >
    <mx:columns>
        <mx:DataGridColumn headerText="Name" itemRenderer="NameItemRenderer"/>
    </mx:columns>
</mx:DataGrid>

这将是您的itemRenderer/编辑器(NameItemRenderer.mxml)


我使用了一个普通的mx:Datagrid和一个spark MXDataGridItemRenderer,但是它的工作方式对于AdvancedDataGrid是一样的


干杯

谢谢丹尼斯!感谢你的快速回复,并为我提供了一些有用的东西。我对创建单独的项目渲染器/项目编辑器仍然有点不确定。不幸的是,我不能给你投票b/c它说“投票需要15个声誉”“。如果我能做些什么,请告诉我。没问题。你可以接受这个答案,认为它对你的问题有帮助。这有点尴尬。我还不太习惯这个网站。我如何接受这个答案的帮助?不允许我单击“0”上方的箭头。而且,我很难得到一个色码。在我的应用程序的其他地方,我选择了gray48,我必须使用十六进制代码#7A7A。对于Label.setStyle函数,我必须使用以“0x”开头的代码。但是在互联网上搜索,这个代码也被称为十六进制代码!任何关于如何找到#7a7a?0x7a7a的等价物的想法都可以做到,它只是一个整数值,而不是十六进制字符串。当你低于一定的声望时,你确实不能得票。不过,我相信你总能“接受”我的回答,作为你问题的答案。有关更多信息,请参阅常见问题页面。干杯谢谢你的指导。我通过点击左边的复选标记找到了如何接受你的答案。我还发现我的问题得到了1票。我在路上。关于您提供的代码,我确实有一个问题:if(value.tag.indexOf(“”)=-1)。这在Flex4/AS 3中对我不起作用。我必须使用if(value.tag.indexOf(“”==0),这意味着*位于字符串的第一个位置。你的代码有什么解释?
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                      xmlns:s="library://ns.adobe.com/flex/spark" 
                      xmlns:mx="library://ns.adobe.com/flex/mx" 
                      focusEnabled="true">
<fx:Script>
    <![CDATA[

        override public function set data(value:Object):void{
            super.data = value;
            if(value.tag.indexOf("*")!= -1){
                lblData.text = "[" + value.tag + "]";
                lblData.setStyle("color",0xFF0000);
            }
            else{
                lblData.text = "" + value.tag ;
                lblData.setStyle("color",0x000000);
            }
        }
    ]]>
</fx:Script>
<s:Label id="lblData" top="0" left="0" right="0" bottom="0"/>