2012-04-27 94 views
1

我有一個asp.net treeView。 在展開的節點上,我綁定了展開節點的子節點。 但是,如果我檢查節點並擴展它,那麼節點及其所有子節點都會在那裏改變位置併成爲主節點的子節點。當再次點擊+時,它需要正確的位置。 關於如何解決它的任何想法!treeview檢查節點後更改地點

,從後面的代碼是樹中的一個UpdatePanel

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
     <asp:TreeView ID="MyTreeView" runat="server" ImageSet="XPFileExplorer" NodeIndent="15" 
    OnTreeNodeExpanded="MyTreeView_TreeNodeExpanded"> 
    <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> 
    <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" 
     NodeSpacing="0px" VerticalPadding="2px" /> 
    <ParentNodeStyle Font-Bold="False" /> 
    <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" 
     VerticalPadding="0px" /> 
</asp:TreeView> 

     </ContentTemplate> 
</asp:UpdatePanel> 

: 在頁面加載我有:提前

if (!this.IsPostBack) 
      { 
       this.MyTreeView.ShowCheckBoxes = TreeNodeTypes.All; 
       this.MyTreeView.ShowLines = true; 
       FillTree();//custom method just to fill the tree 
      } 

protected void MyTreeView_TreeNodeExpanded(object sender, TreeNodeEventArgs e) 
    { 
     TreeNode expandedNode = e.Node; 

     if (expandedNode.Value != "-1" && expandedNode.Value == "-2") 
     { 
      //Some logic 
     } 

    } 

感謝

回答

0

此JavaScript函數修復樹:

function FixTreeview(treeView) { 
      try { 
       if (treeView) { 
        var treeLinks = treeView.getElementsByTagName("a"); 
        var nodeCount = treeLinks.length; 
        for (i = 0; i < nodeCount; i++) { 
         if (treeLinks[i].firstChild.tagName) { 
          if (treeLinks[i].firstChild.tagName.toLowerCase() == "img") { 
           var currentToggleLink = treeLinks[i]; 
           var childContainer = GetParentByTagName("table", currentToggleLink).nextSibling; 
           try { 
            eval(currentToggleLink.href); 
           } catch (e) { 
           } 
          } 
         } 
        } 
       } 
      } catch (e) { 
      } 
     }