首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法为flex halo datagrid定义一个默认的itemrenderer?

有没有办法为flex halo datagrid定义一个默认的itemrenderer?
EN

Stack Overflow用户
提问于 2013-11-12 23:10:06
回答 2查看 217关注 0票数 0

虽然这听起来像是一项简单的任务,但我无法找到解决方案。我有一个没有定义列但有一个ItemRenderer的DataGrid (在DataGrid本身上)。我希望数据网格在向其中填充数据时使用此ItemRenderer。

代码语言:javascript
复制
<mx:DataGrid id="dataGrid" height="100%" width="100%" itemRenderer="my.renderer" />

通过查看DataGrid代码,它看起来应该只针对预定义的列。我发现的唯一解决办法是在填充dataProvider之后分配itemRenderer (这会自动创建列)

EN

回答 2

Stack Overflow用户

发布于 2013-11-13 00:49:15

ItemRenderer是在一个列上定义的,而不是在DataGrid上定义的,所以我认为您的代码会抛出一个编译器错误。

itemRenderer是一个属性,因此不能在DataGridColumn上使用CSS设置它。

但是,MX DataGrid确实有一个样式名称defaultDataGridItemRenderer,它应该传递给GridColumns。您应该能够在CSS中设置它,并使用它来定义每一列的默认itemRenderer。

当您最终拥有一个dataProvider时,您还可以在ActionScript中手动创建列,并以这种方式设置每个列上的itemRenderer。

在发现defaultDataGridItemRenderer样式之前,我最初的建议是说可以扩展DataGridColumn类来设置默认的itemRenderer值。但是,在您提供的代码示例中,您没有手动定义列;因此,您还必须扩展DataGrid才能使用您的自定义列类。

票数 1
EN

Stack Overflow用户

发布于 2013-11-15 10:47:02

itemRenderer属性为ListBase(DataGrid extend )

如果您将DataGrid.itemRenderer=设置为“mx.controls.TextInput”,并且您尚未设置列的值,那么DataGrid将使用TextInput来创建项目渲染器和标题渲染器。

这是DataGrid的源代码

代码语言:javascript
复制
public function createColumnItemRenderer(c:DataGridColumn, forHeader:Boolean, data:Object):IListItemRenderer
{
    var factory:IFactory;

    // get the factory for the data
    factory = c.getItemRendererFactory(forHeader, data);
    if (!factory)
    {
        if (!data)
            factory = nullItemRenderer;
        if (!factory)
            factory = itemRenderer;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19932758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档