Flex/AS3 如何突出显示数据网格行?
in Flex/AS3 how can I highlight a datagrid row?
我正在编写一个应用程序,使用数据网格。各行根据数据显示不同的颜色。当用户选择一行时,颜色会变浅一些。
不幸的是,其中一位用户认为它的对比度不够,想要一个更引人注目的视觉指示器。我的两个想法是;
A) 在选定的整行周围绘制一个矩形。
B) 添加一个包含图像的列,我根据是否选择该行来隐藏或显示该图像。
我沿着路径 A. 走了一会儿,到达了函数中的位置;
覆盖受保护的函数 drawHighlightIndicator
我在查看特定行时能够识别,但无法确定如何绘制矩形。
所以我回溯并查看了 B。我能够创建一个带箭头的项目渲染器,但我不知道如何在选中时打开和关闭它。我在主模块中有一个点击事件,但无法引用回项目渲染器组件。
我可以在数组集合中设置一个值,然后进行刷新,这可能会起作用,但往往会将选定的行移动到数据网格显示区域的顶部。
所以如果有人能在 A 或 B 上帮助我,我将不胜感激。这是一个 DataGrid,而不是 AdvancedDataGrid。
由于您使用的是 mx.controls.DataGrid
,覆盖 drawHighlightIndicator
可能类似于以下示例,它在选择标记周围绘制 1px 红色边框:
protected function drawHighlightIndicator(
indicator:Sprite, x:Number, y:Number,
width:Number, height:Number, color:uint,
itemRenderer:IListItemRenderer):void
{
var width:int = unscaledWidth - viewMetrics.left - viewMetrics.right;
var borderColor:uint = 0xff0000;
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginFill(borderColor);
g.drawRect(0, 0, width, height);
g.beginFill(color);
g.drawRect(1, 1, width - 2, height - 2);
g.endFill();
indicator.x = x;
indicator.y = y;
}
我正在编写一个应用程序,使用数据网格。各行根据数据显示不同的颜色。当用户选择一行时,颜色会变浅一些。
不幸的是,其中一位用户认为它的对比度不够,想要一个更引人注目的视觉指示器。我的两个想法是;
A) 在选定的整行周围绘制一个矩形。 B) 添加一个包含图像的列,我根据是否选择该行来隐藏或显示该图像。
我沿着路径 A. 走了一会儿,到达了函数中的位置;
覆盖受保护的函数 drawHighlightIndicator
我在查看特定行时能够识别,但无法确定如何绘制矩形。
所以我回溯并查看了 B。我能够创建一个带箭头的项目渲染器,但我不知道如何在选中时打开和关闭它。我在主模块中有一个点击事件,但无法引用回项目渲染器组件。
我可以在数组集合中设置一个值,然后进行刷新,这可能会起作用,但往往会将选定的行移动到数据网格显示区域的顶部。
所以如果有人能在 A 或 B 上帮助我,我将不胜感激。这是一个 DataGrid,而不是 AdvancedDataGrid。
由于您使用的是 mx.controls.DataGrid
,覆盖 drawHighlightIndicator
可能类似于以下示例,它在选择标记周围绘制 1px 红色边框:
protected function drawHighlightIndicator(
indicator:Sprite, x:Number, y:Number,
width:Number, height:Number, color:uint,
itemRenderer:IListItemRenderer):void
{
var width:int = unscaledWidth - viewMetrics.left - viewMetrics.right;
var borderColor:uint = 0xff0000;
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginFill(borderColor);
g.drawRect(0, 0, width, height);
g.beginFill(color);
g.drawRect(1, 1, width - 2, height - 2);
g.endFill();
indicator.x = x;
indicator.y = y;
}