我有一个数据网格,其中有一个数据网格列。如果没有自定义 itemrenderer,我可以使用数据提示函数来显示自定义数据提示,但现在我想要一个自定义项目渲染来为行着色不同。因此,我扩展了标签并更改了数据方法,但现在我的 datatip 功能不再起作用。
有任何想法吗?
提前致谢
塞巴斯蒂安
我有一个数据网格,其中有一个数据网格列。如果没有自定义 itemrenderer,我可以使用数据提示函数来显示自定义数据提示,但现在我想要一个自定义项目渲染来为行着色不同。因此,我扩展了标签并更改了数据方法,但现在我的 datatip 功能不再起作用。
有任何想法吗?
提前致谢
塞巴斯蒂安
我知道这个问题有点老了,但是我遇到了同样的问题并通过查看标准 DataGridItemRenderer 类是如何解决的。
所以基本上我最终将该 toolTipShowHandler() 函数复制到我的类中(没有任何修改),实现 IDropInListItemRenderer 接口并在我的渲染器的 commitProperties() 函数中添加几行,这也是受到 DataGridItemRenderer 的启发。
希望这可以帮助。
我参加聚会有点晚了,但是我使用自定义 DataGridItemRenderer 遇到了这个问题。以下链接中描述的解决方案对我来说效果很好:
http://www.kalengibbons.com/blog/index.php/2008/12/displaying-datatips-when-using-an-itemrenderer/
要点是您覆盖项目渲染的 updateDisplayList() 并通过调用 dataTipFunction 和/或像内置项目渲染器一样使用 dataTipField 来设置工具提示。
在此处复制 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。唯一的细微差别是标签的位置,但可以通过样式轻松修改。您可以在此处下载完整的源代码,以获取有关其工作原理的功能示例。
就在我的脑海中,也许让您的自定义项目渲染器扩展 DataGridColumn。这将为您的项目渲染器提供常规列的所有功能。