2012-04-30 4 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> 

ありがとうございました。ご質問がありましたらお知らせください。

答えて

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> 
を助けている場合
関連する問題