我有一个包含一个datagridcolumn的datagrid。如果没有自定义的项目呈现器,我可以使用datatipfunction来显示自定义的datatip,但是现在我想要有一个自定义的项目呈现来对行进行不同的着色。因此,我扩展了一个标签并更改了数据方法,但现在我的datatipfunction不再起作用。
有什么想法吗?
提前感谢
塞巴斯蒂安
发布于 2010-04-19 22:45:32
我知道这个问题有点老了,但是我刚刚遇到了同样的问题,并通过查看标准DataGridItemRenderer类是如何做到的来解决它的。
因此,基本上我最终将toolTipShowHandler()函数复制到我的类中(没有任何修改),实现了IDropInListItemRenderer接口,并在渲染器的commitProperties()函数中添加了几行代码,这些代码也受到了DataGridItemRenderer的启发。
希望这能有所帮助。
发布于 2012-01-24 04:53:50
我参加聚会有点晚了,但我遇到了这个问题,因为我有一个自定义的图片DataGridItemRenderer。下面的链接中描述的解决方案对我来说效果很好:
http://www.kalengibbons.com/blog/index.php/2008/12/displaying-datatips-when-using-an-itemrenderer/
要点是,您可以重写项目渲染器的updateDisplayList(),并通过调用dataTipFunction和/或像使用内置项目渲染器一样使用dataTipField来设置工具提示。
发布于 2014-06-02 18:43:30
将cbranch给出的链接内容复制到这里。stackoverflow在保存代码片段方面更可靠
在使用itemRenderer时显示DataTips
在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,并允许您以相同的方式对待列中的dataTips,无论您是否正在使用itemRenderer。唯一的细微差别是标签的位置,但这可以很容易地通过样式进行修改。你可以在这里下载完整的源代码,以获得如何工作的功能示例。
source
https://stackoverflow.com/questions/1334749
复制相似问题