2009-08-21 59 views
0

我想在我的应用程序中放置一个TreeGrid,以便可以对列进行排序。如果你参考这个sample application,你会发现,如果你使用可排序列创建TreeGrid

  1. 打开分支节点
  2. 排序列的一个
  3. 关闭分支节点

那么的TreeGrid将启动摆脱怪物和重复列开始出现,其他列开始消失。我想要的是只有最外层的节点才能对列进行排序。

我的一个尝试是在发生排序之前运行treeGrid.closeAllItems()。但是,这不起作用,因为在closeAllItems正在运行时分派列事件被分派,所以列表会被搞砸,并且listOutOfBounds异常将被抛出。

有没有人有这方面的成功,或有任何想法?

回答

0

这里是一块工作代码

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 

<mx:Script> 
    <![CDATA[ 
     import mx.collections.HierarchicalData; 

    ]]> 
</mx:Script> 

    <mx:XMLList id="dataProviderXMLList"> 
     <node id="1" name="Companies" type="COMPANIES" desc="All Companies" statusIcon="statusIcon"> 
      <node id="2" name="Adobe" type="COMPANY" desc="Adobe inc." statusIcon="statusIcon"> 
       <node id="5" name="Adobe Consulting" type="COMPANY" desc="Adobe (formerly macromedia)" statusIcon="statusIcon" /> 
       <node id="6" name="EDBU" type="COMPANY" desc="Database company" statusIcon="statusIcon" /> 
      </node> 
      <node id="3" name="Macromedia" type="COMPANY" desc="Adobe (formerly macromedia)" statusIcon="statusIcon" /> 
      <node id="4" name="Oracle" type="COMPANY" desc="Database company" statusIcon="statusIcon" /> 
     </node> 
    </mx:XMLList> 

    <mx:AdvancedDataGrid width="100%" height="100%" sortExpertMode="true" id="adg1" designViewDataType="tree" dataProvider="{new HierarchicalData(dataProviderXMLList)}"> 
     <mx:columns> 
      <mx:AdvancedDataGridColumn headerText="Companies" dataField="@name"/> 
      <mx:AdvancedDataGridColumn headerText="COMPANIES" dataField="@type"/> 
      <mx:AdvancedDataGridColumn headerText="All Companies" dataField="@desc"/> 
     </mx:columns> 
    </mx:AdvancedDataGrid> 

</mx:Application> 

卜这是使用AdvancedDataGrid和它完美的罚款。

+0

就是这样。谢谢! – pfhayes 2009-08-21 16:06:12

+0

是的,它:)欢迎 – 2009-08-21 16:11:34