2

我有一个数据网格,其中有一个数据网格列。如果没有自定义 itemrenderer,我可以使用数据提示函数来显示自定义数据提示,但现在我想要一个自定义项目渲染来为行着色不同。因此,我扩展了标签并更改了数据方法,但现在我的 datatip 功能不再起作用。

有任何想法吗?

提前致谢

塞巴斯蒂安

4

4 回答 4

1

我知道这个问题有点老了,但是我遇到了同样的问题并通过查看标准 DataGridItemRenderer 类是如何解决的。

所以基本上我最终将该 toolTipShowHandler() 函数复制到我的类中(没有任何修改),实现 IDropInListItemRenderer 接口并在我的渲染器的 commitProperties() 函数中添加几行,这也是受到 DataGridItemRenderer 的启发。

希望这可以帮助。

于 2010-04-19T14:45:31.897 回答
1

我参加聚会有点晚了,但是我使用自定义 DataGridItemRenderer 遇到了这个问题。以下链接中描述的解决方案对我来说效果很好:

http://www.kalengibbons.com/blog/index.php/2008/12/displaying-datatips-when-using-an-itemrenderer/

要点是您覆盖项目渲染的 updateDisplayList() 并通过调用 dataTipFunction 和/或像内置项目渲染器一样使用 dataTipField 来设置工具提示。

于 2012-01-23T20:53:49.817 回答
1

在此处复制 cbranch 给出的链接内容。stackoverflow 更可靠地保存代码片段

使用 itemRenderer 时显示数据提示

在 DataGridColumn 中使用 itemRenderers 的坏处之一是您失去了它通常提供的 dataTip 功能。好吧,这是一种伪造该功能的方法。

首先,像往常一样将 dataTipField 或 dataTipFunction 添加到 DataGridColumn。

<mx:DataGridColumn  headerText="DataTip"
      dataField="name1"
      showDataTips="true"
      dataTipField="description1" />

然后,在您的 itemRenderer 中添加以下代码,以便能够利用该信息并改为显示工具提示。

private function getToolTip():String{
    var dg:DataGrid = listData.owner as DataGrid;
    var func:Function = dg.columns[listData.columnIndex].dataTipFunction;
    if(func != null){
           return func.call(this, this.data);
    }else if(dg.columns[listData.columnIndex].dataTipField.length){
           return data[dg.columns[listData.columnIndex].dataTipField];
    }else{
           return "";
     }
 }

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
     super.updateDisplayList(unscaledWidth, unscaledHeight);
     this.toolTip = getToolTip();
  }

这适用于 dataTipFields 和 dataTipFunctions,让您以相同的方式处理列中的数据提示,无论您是否使用 itemRenderer。唯一的细微差别是标签的位置,但可以通过样式轻松修改。您可以在此处下载完整的源代码,以获取有关其工作原理的功能示例。

来源

于 2014-06-02T10:43:29.653 回答
-2

就在我的脑海中,也许让您的自定义项目渲染器扩展 DataGridColumn。这将为您的项目渲染器提供常规列的所有功能。

于 2009-08-27T14:44:55.400 回答