检查节点后,树视图更改位置

时间:2012-04-27 06:42:08

标签: c# asp.net treeview

我有一个asp.net 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
        }

    }

提前致谢

1 个答案:

答案 0 :(得分: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) {
            }
        }