Flex数据网格:检查项目渲染器是否显示网格中的最后一行

时间:2012-02-03 10:42:05

标签: flash actionscript-3 flex

我目前正在使用OLAPDataGrid组件,并且遇到了一个相对简单的任务:我想要将网格的最后一行设置为与其余部分不同,因此我的单元格项目渲染器需要知道他是否渲染最后一行包含整个网格中的内容,包括那些当前未呈现的行,因为它们位于可见网格空间之外。 AdvancedGridListData的rowIndex属性只获取渲染器相对于可见网格行范围的行索引,即当我向下滚动网格时,索引大于0的数据项获得rpw索引= 0.

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:0)

这可能比其他任何东西更糟糕,但你可以在dataprovider中添加一个属性,将其标记为最后一行。然后,您可以在项呈示器中引用该属性,并相应地设置该行的样式。

说你的dp是一个数组收集......

dp.getItemAt(dp.length-1).isLastRow = true;

或XMLListCollection

dp.getItemAt(dp.length - 1).@isLastRow = true;

你唯一需要关注的是这个项目一直都是最后一个。您可以按某个值对其进行排序,然后设置此属性。

然后在您的项目渲染器中,您将拥有以下内容:

override public function set data(value:Object):void
{
    super.data = value;
    if(data.isLastRow)
    {
        //Style the item renderer here
    }
    else if(data.@isLastRow.toString() == "true")
    {
        //XMLListCollection... Style the item renderer here
    }
}

就像我说的,可能有一种更简单的方法,这可能是一种黑客攻击。请在此处发布更好的解决方案(如果找到)以供将来参考。

谢谢,

-Vic

答案 1 :(得分:0)

我的理解是原始DataVisualization组件的一部分,这意味着它应该公开一个styleFunction。有关如何在AdvanceDataGrid文档中创建和使用styleFunction的大量文档。