我的Adobe Flex存在问题。我有AdvancedDataGrid作为树视图,数据提供程序是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>
有人知道我怎么能正确地做?
答案 0 :(得分:1)
你可以尝试一个技巧,但正如你说的不正常,分配索引的问题。 您可以保存选择索引以了解哪个是最后选择的项目,然后在通过事件运行命令后分配它。
[Bindable] 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,您可以尝试使用它来源,直接指定值,不会重新绘制对网格的操作。
regars。