Flex AdvancedDataGrid

| 我的Flex应用程序中有一个AdvancedDatagrid。
<mx:AdvancedDataGrid id=\"reportGrid\" creationComplete=\"groupedData.refresh()\" width=\"100%\" height=\"100%\" variableRowHeight=\"true\">
                    <mx:dataProvider>
                        <mx:GroupingCollection2 id=\"groupedData\" source=\"{reportData}\"/>
                    </mx:dataProvider>
                </mx:AdvancedDataGrid>
我将列,分组和摘要动态分配给groupedData GroupingCollection2。 当我过滤数据源并调用groupedData.refresh()时,网格刷新正常。但是,当我加载数据并且不应用分组(未向GroupingCollection2添加任何分组)时,groupedData.Refresh()不会更新网格以仅显示已过滤的行。我也尝试了调用网格自身的InvalidateList(),但无济于事。     
已邀请:
        谢谢你的建议。 我查看了GroupingCollection2.as:
// return if no grouping or groupingFields are supplied
        if (!grouping || grouping.fields.length < 1 )
        {
            super.source = source;
            // dispatch collection change event of kind reset.
            resetEvent =
                    new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
            resetEvent.kind = CollectionEventKind.RESET;
            dispatchEvent(resetEvent);
            return true;
        }
因此由于某种原因,如果没有分组,Adobe会重置数据源 (我认为)是错误或错误的假设。 上面的代码在调用
groupingCollection.refresh()
时被调用, 这是刷新
AdvancedDataGrid
(我知道的)上显示的唯一方法 因此,我认为一种解决方法是始终至少包含1个分组 在
AdvancedDataGrid
上。但是,这是一个不希望有的限制。     
        我的猜测是发生这种情况的原因是,加载数据时,应用于旧
ArrayCollection
filterFunction
已被擦除。我要做的是复制旧ArrayCollection的ѭ5(如果需要,还需要ѭ8),然后在数据加载后重新分配这些属性。 这是一个快速(未经测试)的示例:
public function loadData(myData:ArrayCollection):void
{
  var filter:Function = reportData.filterFunction;
  reportData = myData;
  reportData.filterFunction = filter;
  reportData.refresh();
}
    

要回复问题请先登录注册