Apache flex 如何删除AdvancedDataGrid上的突出显示/选择
这说明了如何覆盖DataGrid标头的drawHighlightIndicator/drawSelectionIndicators方法,但AdvancedDataGrid在mx_internal中没有“headerClass”。相反,它有一个headerRendererApache flex 如何删除AdvancedDataGrid上的突出显示/选择,apache-flex,flex3,actionscript-3,Apache Flex,Flex3,Actionscript 3,这说明了如何覆盖DataGrid标头的drawHighlightIndicator/drawSelectionIndicators方法,但AdvancedDataGrid在mx_internal中没有“headerClass”。相反,它有一个headerRenderer 如何删除Flex 3中AdvancedDataGrid上的突出显示?绘制AdvancedDataGridBaseEx中的图形调用。如第5468-5471行: var g:Graphics = s.graphics; g.clea
如何删除Flex 3中AdvancedDataGrid上的突出显示?绘制AdvancedDataGridBaseEx中的图形调用。如第5468-5471行:
var g:Graphics = s.graphics;
g.clear();
g.beginFill(getStyle("rollOverColor")); //all I really wanted was to decrease the alpha here :(
g.drawRect(0, 0, w, h - 0.5);
g.endFill();
要消除此问题,可以在扩展AdvancedDataGrid的类中执行此操作:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import mx.controls.AdvancedDataGrid;
public class AdvancedDataGridMinusHighlights extends AdvancedDataGrid
{
public function AdvancedDataGridMinusHighlights()
{
super();
}
override protected function mouseOverHandler(event:MouseEvent):void
{
super.mouseOverHandler(event);
var s:Sprite = Sprite(
selectionLayer.getChildByName("headerSelection"));
if(s) s.graphics.clear();
}
override protected function mouseDownHandler(event:MouseEvent):void
{
super.mouseDownHandler(event);
var s:Sprite = Sprite(
selectionLayer.getChildByName("headerSelection"));
if(s) s.graphics.clear();
}
}
}
尽管这是一个非常不雅观的解决方案,因为它所做的一切都很清楚已经画出了什么。因为AdvancedDataGridBaseEx中的鼠标处理程序中有太多其他垃圾,所以您无法轻松自定义标题的外观
一个稍微优雅一点的(黑客)解决方案是将AdvancedDataGridBaseEx的完整源代码复制到mx.controls包中(我相信你们中的许多人都知道并且同样知道这一黑客行为的后果)。很抱歉,我给出了不同的答案,但我没有足够的“要点”直接对此发表评论。今天我遇到了完全相同的问题,发现这篇文章非常有用 如果我错了,请纠正我,但我认为mouseDownHandler中缺少一行,这会阻止AdvancedDataGrid对数据进行正确排序(如果启用了数据排序): 尽管它可能有用
override protected function mouseDownHandler(event:MouseEvent):void
{
super.mouseDownHandler(event);
var s:Sprite = Sprite(
selectionLayer.getChildByName("headerSelection"));
if(s) s.graphics.clear();
}