当前位置:编程学习 > C#/ASP.NET >>

关于TreeView的奇怪问题,新手求指导

小弟在做下列这个treeview操作时,发现一个很奇怪的问题,选择根节点或二级节点都没问题,但是选择三级节点下列图片上的【222】节点出现问题了,触发不了select事件,调试过程发现点击【222】选中的竟然是【321】,求高人指点,不胜感激!!


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable dt = new sqlHelper().UserList();
            this.ViewState["dt"] = dt;
            AddTree(0, (TreeNode)null);
        }
    }
    //递归添加树的节点
    public void AddTree(int ParentID, TreeNode pNode)
    {
        DataTable dt = (DataTable)this.ViewState["dt"];
        DataView dvTree = new DataView(dt);
        //过滤ParentID,得到当前的所有子节点
        dvTree.RowFilter = "[User_ID_other] = " + ParentID;

        foreach (DataRowView Row in dvTree)
        {
            TreeNode Node = new TreeNode();
            if (pNode == null)
            {  
                //添加根节点
                double xingji =double.Parse(Row["xingji"].ToString());
                string datetime = Row["dt"].ToString();
                Node.Text = Row["UserName"].ToString() ;
                Node.Value = xingji.ToString();
                TreeView1.Nodes.Add(Node);
                Node.Expanded = true;
                AddTree(Int32.Parse(Row["User_ID"].ToString()), Node); //再次递归
            }
            else
            {   
                //添加当前节点的子节点
                double xingji = double.Parse(Row["xingji"].ToString());
                string datetime = Row["dt"].ToString();
                Node.Text = Row["UserName"].ToString();
                Node.Value = xingji.ToString();
                pNode.ChildNodes.Add(Node);
                Node.Expanded = true;
                AddTree(Int32.Parse(Row["User_ID"].ToString()), Node); //再次递归
            }
        }
    }

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        TreeNode tn = new TreeNode();
        tn = TreeView1.SelectedNode;
        Response.Write(getChildren(TreeView1.SelectedNode));
    }


    protected string getChildren(TreeNode currTreeNode)
    {
        string rv = "";
        int i = 0;
        if (currTreeNode.ChildNodes.Count > 0)
        {
            for (i = 0; i < currTreeNode.ChildNodes.Count; i++)
            {
                rv += currTreeNode.ChildNodes[i].Value + ",";
                if (currTreeNode.ChildNodes[i].ChildNodes.Count > 0)
                {
                    rv += getChildren(currTreeNode.ChildNodes[i]);
                }
            }
        }
        return rv;
    }
--------------------编程问答-------------------- --------------------编程问答-------------------- 显然是节点的编号乱了,去数据库中看看查询一下暑假看看就知道了。

建议删除所有的节点,然后添加下断点测试一下应该问题很快就可以找出来的。 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,