在 Flex 4 中 , ItemRenderer 与 ItemEditor 有 何 不同 ?

irlmq6kh  于 2022-11-21  发布在  Apache
关注(0)|答案(2)|浏览(188)

我知道很多人已经问过这类问题,但那篇文章并没有给予我更多的信息来理解Flex框架中ItemRenderer和ItemEditor之间的实际差异。
据我所知,ItemRenderer主要用于显示可视元素,ItemEditor主要用于编辑目的。
所以我试着用下面的例子来找出它们之间的区别:
对于ItemRenderer,我使用了以下代码:

<mx:DataGrid dataProvider="{initDG}">
    <mx:columns>
        <mx:DataGridColumn headerText="Artist" dataField="Artist"/>
        <mx:DataGridColumn headerText="Album" dataField="Album"/>
        <mx:DataGridColumn headerText="Price" dataField="Price">
            <mx:itemRenderer>
                <fx:Component>
                    <mx:TextInput restrict="0-9" maxChars="10" />
                </fx:Component>
            </mx:itemRenderer> 
        </mx:DataGridColumn>
        <mx:DataGridColumn headerText="Cover" dataField="Cover"/>
    </mx:columns>
</mx:DataGrid>

并得到如下结果:

其中“价格”字段显示为可编辑。
我再次尝试使用ItemEditor执行相同的代码,如下所示:

<mx:DataGrid dataProvider="{initDG}">
    <mx:columns>
        <mx:DataGridColumn headerText="Artist" dataField="Artist"/>
        <mx:DataGridColumn headerText="Album" dataField="Album"/>
        <mx:DataGridColumn headerText="Price" dataField="Price">
            <mx:itemEditor>
                <fx:Component>
                    <mx:TextInput restrict="0-9" maxChars="10" />
                </fx:Component>
            </mx:itemEditor> 
        </mx:DataGridColumn>
        <mx:DataGridColumn headerText="Cover" dataField="Cover"/>
    </mx:columns>
</mx:DataGrid>

并得到如下结果:

但此处的“价格”字段不可编辑。
因此,由于我是这些控件的新手,我越来越困惑为什么会发生这种情况。在使用ItemEditor作为为什么该字段是不可编辑的。
如果有人知道这背后的原因是什么,请帮助我了解更多关于这两个控制的细节。

niknxzdl

niknxzdl1#

ItemRendererItemEditor之间的差异:
当你使用ItemRenderer时,你改变了你的组件的外观。在你的例子中,如果你有一个datagrid列,并应用itemRenderer和一个图像,你在你的列中有一个图像显示。
如果您使用ItemEditor,则在尝试更改该列时,将对组件的外观进行操作。如果您将ItemEditor作为TextInput放在列上,则在单击列时将显示文本输入。
Flex具有ItemRenderer和ItemEditor的自动管理,默认情况下,渲染器是编辑器,因此当您只想实现ItemRenderer时,可以使用相同的方面来编辑您的列。
如果你想把这些特性分开,你可以放rendererIsEditor = false,但是你必须实现两个功能。
我希望我的解释清楚了。如果你还有其他疑问,请告诉我

lg40wkob

lg40wkob2#

在第一种情况下,编辑以迂回的方式工作,因为您在呈现器中嵌入了一个可编辑字段。单元格始终处于编辑模式,并且不使用DataGrid的内置编辑模式。
在第二种情况下,您的itemEditor不会被Flex激活,因为DataGrid要求“editable= true”。如果将editable设置为true,则当用户单击单元格时,您的itemEditor应被激活。
还有第三种方法:对数据网格使用“editable=true”,保留itemRenderer,并在列上设置“rendererIsEditor”。
查看此处的示例; Adobe Flex文件

相关问题