flex datagrid - 项呈示器和跳过行

时间:2009-06-29 09:41:41

标签: flex datagrid

HI,

我有一个包含6列的数据网格,每列都有自己的项目渲染器。在第一列中,我希望能够检查并查看列是否包含一些有效数据,如果没有,那么我想跳过此行并转到下一行。换句话说,我想要一种方法来告诉我的datagrid停止处理当前数据对象的其余项呈示器并跳到下一个。有任何想法吗?

2 个答案:

答案 0 :(得分:1)

我想说你最好的办法就是在ListCollectionView对象上使用filterFunction属性(例如ArrayCollection)。这允许您在网格中显示之前过滤掉您不希望在DataGrid中显示的对象,并且应该避免任何itemRenderers被完全处理。

答案 1 :(得分:0)

如果您仍希望“跳过”对象显示在数据网格中,只是更改项目渲染器对其的响应方式,那么您需要在渲染器中为其编写代码。

在项呈示器的内部,您可以访问前一列的数据值。您应该检查项呈示器中可用的listData属性,并使用您的发现来配置项呈示器的显示方式。

您可以在此处找到有关listData的信息:http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridListData.html

要检查以前的值,可以编写如下代码:

var dgListData:DataGridListData = DataGridListData( listData );

// Process all columns before the current one.
for ( var i:int = 0; i < dgListData.columnIndex; i++)
{
    // Do something here to examine previous data

    // If we should stop processing based on previous values
    // then hide everything inside of this renderer (perhaps
    // move to a state name 'empty' that has no children), else
    // move to the state that renders something.
    currentState = shouldSkipObject ? 'empty' : 'normal';
}

如果您想要在项目渲染器内部编写代码的更具体的帮助,请包含数据网格内部数据的样本以及项目渲染器实际应该执行的操作的说明。