none
请教TreeView怎么展开二、三层? RRS feed

  • 问题

  • 运行了以下语句只展开了一层,请高手帮我看一下:

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                TreeViewBind();
            }
        }
        private DataSet bandshen(string sql)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["office"].ConnectionString);
          

                con.Open();
                SqlDataAdapter sda = new SqlDataAdapter(sql, con);
                DataSet ds = new DataSet();
                sda.Fill(ds);
                return ds;
                con.Close();      
        }
        private void TreeViewBind()
        {
            string strSql = "select fid from a ";
            using (DataSet ds = bandshen(strSql))
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    TreeNode myNode = new TreeNode();
                    myNode.Text = ds.Tables[0].Rows["fid"].ToString();              
                    this.TreeView1.Nodes.Add(myNode);               
                    string str = "select fname from b  where fid='" + myNode.Text + "'  ";  ///这里第二、三层要怎样才可以展开??谢谢            
                    using (DataSet dsVideo =bandshen(str))
                    {
                        for (int j = 0; j < dsVideo.Tables[0].Rows.Count; j++)
                        {
                            TreeNode myChild = new TreeNode();                        
                            myChild.Text = dsVideo.Tables[0].Rows[j]["fname"].ToString();
                            myNode.ChildNodes.Add(myChild);
                        }
                    }


                }


            }
        }

    }


    SQL表如下:

    CREATE TABLE [dbo].[a] (
    [fid] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

    insert into a (fid)
    values('广东')
    insert into a (fid)
    values('天津')

    CREATE TABLE [dbo]. (
    [fid] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [fname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

    insert into b (fid,fname)
    values('广东','佛山')


    CREATE TABLE [dbo].[c] (
    [fid] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [fname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

    insert into c (fid,fname)
    values('佛山','三水')
    insert into c (fid,fname)
    values('佛山','火炭')
    insert into c (fid,fname)
    values('天津','斗门')


    效果如下:

    |      
    |      
    广东----佛山
    |        |
    |        |-- 三水
    |        |            
    |        ----火炭
    |
    |
    |
    天津----斗门
    |        
    |
    2009年6月8日 9:39

答案

  • private void TreeViewBind()
    {
        string strSql = "select fid from a ";
        using (DataSet ds = bandshen(strSql))
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                TreeNode myNode = new TreeNode();
                myNode.Text = ds.Tables[0].Rows["fid"].ToString();
                this.TreeView1.Nodes.Add(myNode);
                string str = "select fname from b  where fid='" + myNode.Text + "'  ";  ///这里第二、三层要怎样才可以展开??谢谢            
                using (DataSet dsVideo = bandshen(str))
                {
                    for (int j = 0; j < dsVideo.Tables[0].Rows.Count; j++)
                    {
                        TreeNode myChild = new TreeNode();
                        myChild.Text = dsVideo.Tables[0].Rows[j]["fname"].ToString();
                        myNode.ChildNodes.Add(myChild);
                        if (myChild.Depth == 2 || myChild.Depth == 3)
                            myChild.Expand();
                    }
                }
            }
        }
    }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 伊藤诚 2009年6月8日 12:23
    2009年6月8日 11:04
    版主

全部回复

  • private void TreeViewBind()
    {
        string strSql = "select fid from a ";
        using (DataSet ds = bandshen(strSql))
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                TreeNode myNode = new TreeNode();
                myNode.Text = ds.Tables[0].Rows["fid"].ToString();
                this.TreeView1.Nodes.Add(myNode);
                string str = "select fname from b  where fid='" + myNode.Text + "'  ";  ///这里第二、三层要怎样才可以展开??谢谢            
                using (DataSet dsVideo = bandshen(str))
                {
                    for (int j = 0; j < dsVideo.Tables[0].Rows.Count; j++)
                    {
                        TreeNode myChild = new TreeNode();
                        myChild.Text = dsVideo.Tables[0].Rows[j]["fname"].ToString();
                        myNode.ChildNodes.Add(myChild);
                        if (myChild.Depth == 2 || myChild.Depth == 3)
                            myChild.Expand();
                    }
                }
            }
        }
    }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 伊藤诚 2009年6月8日 12:23
    2009年6月8日 11:04
    版主
  • 你好,你可以定义设置TreeView的ExpandDepth属性设置为2就可以了。
    邹俊才
    2009年6月8日 12:09
    版主