【问题标题】:Flex Implementing IDropInListItemRenderer in custom Item Renderer using ItemRenderer ClassFlex 使用 ItemRenderer 类在自定义项渲染器中实现 IDropInListItemRenderer
【发布时间】:2012-07-16 14:48:51
【问题描述】:

我在 Flex 中为 DataGrid 制作了一个自定义 ItemRenderer。我的问题是,我需要能够使用 listData,这样我才能弄清楚 ItemRenderer 所在的当前行。但我似乎无法正确实现 IDropInListItemRenderer,因为无论什么 listData 对我来说始终为空。

这是我在顶部的代码:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" autoDrawBackground="false" styleName="gRenderer" dataChange="setStates()" implements=" mx.controls.listClasses.IDropInListItemRenderer">

然后我有:

 private var _listData:BaseListData;

然后我有:

public function get listData():BaseListData {
        return this._listData;
    }

    public function set listData( value:BaseListData ):void {
        this._listData = value;
    }

但是在我的设置数据方法中,我尝试这样做:

 override public function set data( value:Object ):void {
        super.data = value;
       var row : int = listData.rowIndex;
    }

但在运行时它会抛出一个错误,说明它正在尝试访问空对象的属性。在我的调试器中,我可以看到 listData 为空。我不知道为什么。从我在网上到处阅读的内容来看,我似乎正在做所有需要的事情。我错过了什么?

谢谢!

【问题讨论】:

标签: apache-flex itemrenderer


【解决方案1】:

看起来您正在为 spark 数据网格构建自定义 ItemRenderer。如果是这样,请使用 s:GridItemRenderer,而不是使用基类 s:ItemRenderer。 rowIndex 有一个公共属性可以参考。

override public function set data( value:Object ):void {
    super.data = value;
    trace(rowIndex);
}

【讨论】:

  • 是什么让您认为原始发帖人使用的是 Spark DataGrid?根据他的帖子,我无法判断他使用的是 Spark 还是 MX DataGrid。
  • 我看到他在他的 mxml 中使用了 spark 命名空间 (s:ItemRenderer xmlns:s="library://ns.adobe.com/flex/spark")。
  • 嗯,我可以并且愿意使用 GridItemRenderer,这是一个很好的建议。问题是,我有这是我的项目渲染器: 问题是,它告诉我“这里不允许使用元素 s:transitions。 "
  • @slukse 这并不意味着他正在使用 Spark DataGrid;因为 MX 命名空间也被列出了。但是,你是对的,你不能将 spark ItemRenderer 类与基于 MX 列表的类一起使用,你必须使用 MXItemRenderer 类。
  • Flextras,那是我的 MXItemRenderer 吗?说我应该使用它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
相关资源
最近更新 更多