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

读取数据库绑定到Treeview的问题,求高手指点

代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {     
        SqlConnection conn = new SqlConnection(@"server=192.168.0.226;database=discuz;uid=sa;pwd=841102");
        conn.Open();
        string sqltxt = @"select layer,name  from dnt_forums";
        SqlCommand cmd = new SqlCommand(sqltxt, conn);
        SqlDataReader myread=cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt = ConvertToDataTable(myread);

        TreeViewBind(dt);
 

    }

        private void TreeViewBind(DataTable dt)
        {      
            DataRow[] rows = dt.Select("layer =0");        
            foreach (DataRow drv in rows)
            {
                TreeNode node = new TreeNode();
                node.Text = drv["name"].ToString();
                node.Value = drv["layer"].ToString();
                node.NavigateUrl = "AddAdmin.aspx?id=" + node.Value;
                node.Target = "info";
                node.Expanded = false;
                TreeView1.Nodes.Add(node);
                
            }

            TreeView1.DataBind();
        }

        private void Addchildtree(DataTable dt, TreeNode node)
        {
            DataRow[] rows = dt.Select("layer=1");
           
            foreach (DataRow row in rows)
            {
                TreeNode childnode = new TreeNode();
                childnode.Text = row["name"].ToString();
                childnode.Value = row["layer"].ToString();
                childnode.NavigateUrl = "AddAdmin.aspx?id=" + childnode.Value;
                childnode.Target = "info";
                childnode.Expanded = false;
                node.ChildNodes.Add(childnode);
                Addchildtree(dt, childnode);
            }
        }



        public DataTable ConvertToDataTable(SqlDataReader dataReader)
        {
            DataTable dt = new DataTable();
            DataTable schemaTable = dataReader.GetSchemaTable();
            try
            {
                //动态构建表,添加列
                foreach (DataRow dr in schemaTable.Rows)
                {
                    DataColumn dc = new DataColumn();
                    //设置列的数据类型
                    dc.DataType = dr[0].GetType();
                    //设置列的名称
                    dc.ColumnName = dr[0].ToString();
                    //将该列添加进构造的表中
                    dt.Columns.Add(dc);
                }
                //读取数据添加进表中
                while (dataReader.Read())
                {
                    DataRow row = dt.NewRow();
                    //填充一行数据
                    for (int i = 0; i < schemaTable.Rows.Count; i++)
                    {
                        row[i] = dataReader[i].ToString();

                    }
                    dt.Rows.Add(row);
                    row = null;
                }
                dataReader.Close();
                schemaTable = null;
                return dt;
            }
            catch (Exception ex)
            {

                //抛出异常
                throw new Exception(ex.Message);
            }

        }

}


现在能绑定根节点并显示,但是子节点要怎么调用搞不懂,Addchildtree()这个方法怎么用? --------------------编程问答-------------------- 这个刚好适合:

       WinForm中TreeView数据绑定 --------------------编程问答-------------------- 子节点要在添加一个父节点的时候调用 --------------------编程问答--------------------
引用 2 楼 change_l 的回复:
子节点要在添加一个父节点的时候调用

能不能具体说下要怎么用?我是新手+自学,没人指导,学得好吃力
--------------------编程问答--------------------
引用 1 楼 sdl2005lyx 的回复:
这个刚好适合:

       WinForm中TreeView数据绑定

谢谢这位大哥,我好好看下 --------------------编程问答--------------------
引用 1 楼 sdl2005lyx 的回复:
这个刚好适合:

       WinForm中TreeView数据绑定

--------------------编程问答-------------------- private void TreeViewBind(DataTable dt)
        {      
            DataRow[] rows = dt.Select("layer =0");        
            foreach (DataRow drv in rows)
            {
                TreeNode node = new TreeNode();
                node.Text = drv["name"].ToString();
                node.Value = drv["layer"].ToString();
                node.NavigateUrl = "AddAdmin.aspx?id=" + node.Value;
                node.Target = "info";
                node.Expanded = false;
                TreeView1.Nodes.Add(node);
                Addchildtree(dt,node);
            }

            TreeView1.DataBind();
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,