2012-04-30 291 views
0

喜的朋友在這裏展開柔性樹項目是我的要求:利用其標籤或其他領域

當我加倍在那個特定的項目應打開(展開)的「搜索」選項卡中單擊某個項目中的「測試組樹「選項卡。 搜索選項卡中的項目是列表和項目測試組樹是一個TreeItem。根據我的知識,在其他選項卡中展開樹項目的唯一方法是使用其標籤名稱(唯一)。

這裏我使用了下面提到的代碼來實現我的要求。現在,當我雙擊「搜索」選項卡中的項目時,「測試組樹」選項卡將正確打開,但SelectedItem未展開(在預期的其他選項卡中打開 - 僅打開測試組樹選項卡並且沒有任何項其他情況發生)。 請幫我實現我的要求。

private function TSTree_itemDoubleClick(event:ListEvent):void{ 
    var selectedItem: TSTreeItem = TSTreeItem(TSTreeTestGroup.getSelectedFolderItem()); 
    this.TSTreeTestGroup.tabMain.selectedIndex=0; // Here i am trying to open a next tab(it works) 

    //var selectedSampleItem: TSTreeItem = PLTreeItem(TSTreeTestGroup.treTree.getChildByName(selectedItem.label)); 
    TestGroupTree(TestGroupManager(this).TSTreeTestGroup).loadPartialTreeItem(selectedItem); // Here i actually want to refresh the particular tree item  
    TestGroupTree(TestGroupManager(this).TSTreeTestGroup).treTree.expandItem(selectedItem,true,false); // here i am trying to expand the particular tree item 
    //TestGroupManager(TestGroupTree(TSTree(event.currentTarget).parentDocument).parentDocument).TSTreeTestGroup.treTree.expandItem(selectedItem, true, false); 
    //TestGroupManager(TestGroupTree(TSTree(event.currentTarget).parentDocument).parentDocument).TSTreeTestGroup.loadPartialTreeItem(this.TSTreeTestGroup.treTree.getChildByName(selectedItem.label); 
    // in the following i am tryin to get the TreeItemName and expand it accordingly 
    TestGroupTree(TestGroupManager(this).TSTreeTestGroup).treTree.expandItem(this.TSTreeTestGroup.treTree.getChildByName(selectedItem.label), true, true); 
} 

<?xml version="1.0"?> 
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml" implements="integras.TS.component.TSTreeComponent" 
    show="Component_Show();" 
    remove="Component_Remove();" > 
<mx:TabNavigator id="tabMain" change="tabMain_Change();" styleName="plTitleWindowTabNavigator" creationPolicy="all" > 
     <mx:Canvas label="Test Group Tree"> 
      <ns1:TSTree dataProvider="{dpTree}" updateComplete="treTree_UpdateComplete();" iconFunction="getTreeIcon" labelField="label" iconField="icon" showRoot="false" allowMultipleSelection="true" id="treTree" doubleClickEnabled="true" itemDoubleClick="treTree_ItemDoubleClick(event);" itemClick="treTree_ItemClick(event);" itemOpen="treTree_ItemOpen(event);" > 
      </ns1:TSTree> 
     </mx:Canvas> 
     <mx:Canvas label="Search" width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
      <mx:Canvas> 
       <mx:HRule/> 
       <mx:List dataProvider="{dpSearch}" dragEnabled="false" labelField="label" iconField="icon" id="lstSearch" doubleClickEnabled="true" itemDoubleClick="lstSearch_ItemDoubleClick(event);" itemClick="lstSearch_ItemClick(event);"> 
       </mx:List> 
      </mx:Canvas> 
    </mx:Canvas> 
</mx:TabNavigator> 
</mx:Box> 

感謝Advance.Please讓我知道如果您有任何疑問。

回答

1

嘗試搜索樹中選定的項目,如果找到了擴大節點。我認爲這個問題可能是你選擇的項目傳遞給樹擴展。

檢查這個樣本可以幫助你

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" verticalAlign="middle"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.messaging.management.Attribute; 
      import mx.events.ListEvent; 

      import mx.controls.Alert; 
      import mx.collections.XMLListCollection; 

      [Bindable] 
      private var searchResult:XMLList; 
      private var searchResultIndex:uint = 0; 

      private function findByLabel(event:Event):void 
      { 
       var searchStr:String = List(event.currentTarget)[email protected]; 
       tabMain.selectedIndex = 0; 
       tree.openItems = []; 
       //xmlDP.descendants().(@label == List(evt.currentTarget)[email protected])[0] 
       searchResult = xmlDP.descendants().(@label.toLowerCase().search(searchStr.toLowerCase()) > -1); 
       searchResultIndex = 0; 
       if (searchResult[searchResultIndex] != undefined) 
        expandNode(searchResult[searchResultIndex]); 
      } 

      private function expandNode(xmlNode:XML):void 
      { 
       while (xmlNode.parent() != null) { 
        xmlNode = xmlNode.parent(); 
        tree.expandItem(xmlNode, true, false); 
       } 
      } 
     ]]> 
    </mx:Script> 

    <!-- Sample tree data --> 
    <mx:XML id="xmlDP"> 
     <root> 
       <node label="Parent 1"> 
        <node label="Child 1"/> 
        <node label="Child 2"> 
         <node label="Grandchild 1"/> 
         <node label="Grandchild 2"/> 
        </node> 
        <node label="Child 3"/> 
        <node label="Child 4"/> 
        <node label="Child 5"> 
         <node label="Grandchild 1"/> 
         <node label="Grandchild 2"/> 
        </node> 
       </node> 
      </root> 
    </mx:XML> 

    <mx:XMLListCollection id="xmlMenuList" source="{xmlDP.*}"/> 


    <mx:XMLList id="listData"> 
      <data> 
      <node label="Parent 1" /> 
      <node label="Child 1"/> 
      <node label="Child 2"/> 
      <node label="Grandchild 1"/> 
      <node label="Grandchild 2" /> 
      <node label="Child 3"/> 
      <node label="Child 4"/> 
      <node label="Child 5"/> 
      <node label="Grandchild 1"/> 
      <node label="Grandchild 2" /> 
     </data> 
    </mx:XMLList> 


    <mx:TabNavigator id="tabMain" creationPolicy="all" width="100%" > 
      <mx:Canvas label="Test Group Tree"> 
       <mx:Tree dataProvider="{xmlMenuList}" labelField="@label" iconField="icon" showRoot="false" 
         allowMultipleSelection="true" id="tree" doubleClickEnabled="true" width="100%"> 
       </mx:Tree> 
      </mx:Canvas> 
      <mx:Canvas label="Search" width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
       <mx:Canvas width="100%"> 
        <mx:HRule/> 
        <mx:List dataProvider="{listData.node}" dragEnabled="false" labelField="@label" id="lstSearch" 
          width="100%" itemClick="findByLabel(event)"> 
        </mx:List> 
       </mx:Canvas> 
      </mx:Canvas> 
    </mx:TabNavigator> 


</mx:Application>