使用它的标签或其他领域展开柔性树项目它的、或其他、柔性、领域

2023-09-08 15:14:27 作者:白鹿饮清溪

喜这里的朋友是我的要求:

Hi friends here is my requirement:

当我双击在那个特定的项目应打开(扩大)在测试组树选项卡中的搜索选项卡中的项目。 在搜索选项卡中的项目是列表和测试组树的项目是一个TreeItem。据我了解,扩大在其他选项卡中树项目的唯一方法是使用它的标签名称(唯一的)。

When I double click an item in the "search" tab that particular item should be opened(expand) in the "Test Group Tree" tab. The item in the search tab is a list and the item in Test Group Tree is a TreeItem. According to my knowledge the only way to expand a tree item in other tab is by using its label name(unique).

在这里,我已经使用了下面提到code来实现我的要求。对于现在的测试组树选项卡中打开正确的,当我双击在该项目中的搜索选项卡,但的SelectedItem不扩大(在如预期,仅在测试组树标签打开,没有什么事情发生)。 请帮我达到我的要求。

Here I have used the below mentioned code to implement my requirement. For now the "Test Group Tree" tab opens correctly when i double click in the item in the "search" tab but the SelectedItem is not expanded(opened in the other tab as expected-only the Test Group Tree tab opens and nothing else happens). Please help me achieve my requirement.

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让我知道如果您有任何疑问。

Thanks in Advance.Please let me know if you have any queries.

推荐答案

请尝试在树中选择的项目,如果找到了扩大​​node.I觉得问题可能是所选择的项目,您将可以通过什么树不断扩大。

try searching the selected item in Tree if the found the expand the node.I think the problem may be the selected item what your are passing to tree for expanding.

检查该样本可以帮助你

<?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>