apache-flex - AdvancedDataGrid + GrouppingCollection2 - 滚动到特定项目

标签 apache-flex flex4

我对 Adob​​e Flex 有疑问。我将 AdvancedDataGrid 作为 TreeView ,它的数据提供者是 GroupingCollection2。在这个网格中,我有文档,它们按 3 个标签分组。当用户修改任何文档时,我必须刷新整个网格。这是我的问题。刷新后我的网格滚动到开头。我设法将其滚动到上一个索引,但效果不佳。如果已编辑文档上方的任何节点折叠,则在刷新后所有节点都会展开,并且先前的索引不针对同一文档。如何记住所选项目并滚动到它?

我对此有困难,主要是因为数据网格中的行多于源中的项目。是这样的,因为网格中的所有“文件夹”也算作行。

这是我的 AdvancedDataGrid:

<mx:AdvancedDataGrid  visible="{entityId > 0}" height="100%" variableRowHeight="true" width="90%" left="5" right="5" bottom="5" top="70" id="_dg" doubleClickEnabled="false" doubleClick="onDgDoubleClick(event)"  updateComplete="onUpdateComplete(event)">
            <mx:dataProvider>
                <mx:GroupingCollection2 id="_groupper" source="{getTemplateFilesResponder.lastResult}">
                    <mx:grouping>
                        <mx:Grouping>
                            <mx:GroupingField name="Type1" groupingFunction="getTypeLabel" id="_groupingField"  />
                            <mx:GroupingField name="Type2" groupingFunction="getTypeLabel" />
                            <mx:GroupingField name="Type3" groupingFunction="getTypeLabel"/>
                        </mx:Grouping>
                    </mx:grouping>
                </mx:GroupingCollection2>
            </mx:dataProvider>    
            <mx:columns>        
                <mx:AdvancedDataGridColumn headerText="{resourceManager.getString('biawizard','file.18')}" dataField="OriginalFileName" wordWrap="true" />
                <mx:AdvancedDataGridColumn headerText="{resourceManager.getString('biawizard','list.labeldescription')}" dataField="Comments" wordWrap="true" />

                <mx:AdvancedDataGridColumn headerText="{resourceManager.getString('biawizard','filelistform.Version')}" dataField="Version" wordWrap="true" />
                <mx:AdvancedDataGridColumn headerText="{resourceManager.getString('biawizard','filelistform.Status')}" dataField="Status" labelFunction="getStatusLabel" wordWrap="true" />

            </mx:columns>
        </mx:AdvancedDataGrid>

有人知道我怎样才能正确地做事吗?

最佳答案

您可以尝试一个技巧,但正如您所说的那样工作不正常,分配索引的问题。 您可以保存选择索引以了解哪个是最后选择的项目,然后在通过事件运行命令后分配它。

[可绑定(bind)] private var objLastSelectIndex:int;

private function init()
{
    FlexGlobals.topLevelApplication.addEventListener(Controller.EVENT_YOUR_EVENT_REFRESH, onScrollSett);
}

private function onItemClickDataGrid(e:Event):void 
{
    this.objLastSelectIndex = this.adgData.selectedIndex;
}

private function onScrollSett(e:Event):void
{
    try
    {
        this.adgData.selectedIndex = this.objLastSelectIndex
        this.adgData.validateNow();
        this.adgData.scrollToIndex(this.objLastSelectIndex);    
    }
    catch(err:Error)
    {
        //TODO: ERROR IN INDEX SETTING
    }

}


<mx:AdvancedDataGrid id="adgData" itemClick="{onClickItemDataGrid(event)}" />

此外,如果您使用 ArrayCollection,您可以尝试使用它的源代码,直接分配值,您对网格所做的操作不会重绘。

问好。

关于apache-flex - AdvancedDataGrid + GrouppingCollection2 - 滚动到特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073619/

相关文章:

xml - 您可以将 XML-RPC 数据源用于 Adob​​e Flex 应用程序吗?

java - 将对象从 Java(BlazeDs) 服务器传递到前端 Flex 应用程序

php - 将 PHP 输出数据中的数据字段分组到 AdvancedDatagrid

apache-flex - 运行时自定义皮肤的 Flex 变化值

css - 如何在不将图像嵌入外部样式表的情况下将图像用于皮肤

php - Flex + PHP : Flash Builder 4 vs. eclipse

apache-flex - 使用 Flex compc ant 任务将目录/通配符的内容编译到 SWC

java - 在已经使用 spring-mvc 作为依赖项的依赖项的应用程序中设置 spring-mvc

apache-flex - Flex 框架的替代品

apache-flex - Flex 4 中的自定义预加载器?