1

我有一个以 ArrayCollection 作为其 dataProvider 的 AdvancedDataGrid。例如,我有一个 CheckBox,它允许我显示或隐藏 AdvancedDataGrid 中的某些行。

知道我该怎么做吗?

4

1 回答 1

5

我的建议是使用您的数据提供者的filterFunction财产。基本上,您可以为您的数据提供者提供一个函数,该函数将确定 ArrayCollection 中的给定项目是否被排除(如果项目被排除,它将不会显示在 AdvancedDataGrid 中,实质上使其“不可见”)。的文档filterFunction可以在这里找到。

我的建议是选中该复选框会在您的数据提供者中的对象上设置一个属性,然后您的过滤器函数会使用该属性来包含/排除行。一些(非常粗略的)伪代码如下:

private function checkboxClickHandler( event:MouseEvent ):void
{
    /*
       Based on the MouseEvent, determine the row 
       in the data grid you're dealing with
    */

    myDataProvider[someIndex].checkboxFlag = myCheckBox.selected;
    myDataProvider.refresh(); // calling refresh() re-applies the filter to
                              // account for changes.
}

private function myDataProviderFilterFunction( item:Object ):Boolean
{
     // assuming we want the item to be filtered if checkboxFlag is true
     return !item["checkboxFlag"];
}
于 2010-01-20T14:53:57.770 回答