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>

ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1

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).selectedItem.@label;
                tabMain.selectedIndex = 0;
                tree.openItems = [];
                //xmlDP.descendants().(@label == List(evt.currentTarget).selectedItem.@label)[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>
于 2012-04-30T13:53:04.133 に答える