using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page  
{
  protected void Page_Load(object sender, EventArgs e)
  {
  if (Page.IsPostBack)
  {
  return;
  }
  string constr = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
  SqlConnection con = new SqlConnection(constr);
  string sql = "select A.id,name,number,Tname from A,B where number=A.id";
  SqlDataAdapter sda = new SqlDataAdapter(sql, con);
  DataSet ds = new DataSet();
  sda.Fill(ds);
  GridView1.DataSource = ds.Tables[0];
  GridView1.DataBind();  ViewState["Ds"] = ds;
  LoadView();
  }  private void LoadView()
  {
  DataSet ds = ViewState["Ds"] as DataSet;
  foreach (DataRow dr in ds.Tables[0].Rows)
  {
  TreeNode tn = new TreeNode(dr["name"].ToString(),dr["id"].ToString());
  treeview1.Nodes.Add(tn);
  LoadView(tn.Value,tn);
  }
  }  private void LoadView(string p, TreeNode t)
  {
  DataSet ds = ViewState["Ds"] as DataSet;
  foreach (DataRow dr in ds.Tables[0].Rows)
  {
  TreeNode tn = new TreeNode(dr["Tname"].ToString());
 
  t.ChildNodes.Add(tn);
  //LoadView(tn.Value, tn);
  }
  }
}
-----------------------------------------------------------------
数据库
create table A
(
id int identity(1,1) primary key,
name varchar(20)
)insert into A(name)values('文学')
insert into A(name)values('体育')
create table B
(
id int identity(1,1) primary key,
number int references A(id),
Tname varchar(20)
)
insert into B(number,Tname)values(1,'语文')
insert into B(number,Tname)values(1,'数学')insert into B(number,Tname)values(2,'篮球')
insert into B(number,Tname)values(2,'足球')select *from B
---------------------------------------------------
想要的效果时文学
  语文
  数学
体育
  篮球
  足球

解决方案 »

  1.   

    数据库设计时 可以弄成3个字段  id  name parentId.
    文学和体育的parentId -1,语文和数学的parentId就是文学的Id,以此类推
    绑定treeView可以用递归
      

  2.   

    private void BandTreeView(string seldate)
        {
            //读取数据库中的数据
            DataTable dataTable=Bind().Tables[0];
            this.TreeView1.Nodes.Clear();        DataRow[] rowList = dataTable.Select("parentid='0'");              //获取筛选器中的数据,返回一个行数组        if (rowList.Length < 1)
                return;        TreeNode rootNode = new TreeNode();        rootNode.Text = rowList[0]["nodename"].ToString();
            rootNode.Value = rowList[0]["nodeid"].ToString();               //设置根节点的Key值(key从1开始起)        rootNode.Expanded = true;        this.TreeView1.Nodes.Add(rootNode);        //调用其他函数,创建其他子节点
            CreateChildNode(rootNode,"0");
        }
        //查询结果
        private DataSet Bind()                                  //返回一个结果集
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
            con.Open();
            string cmdtext = "select * from treeviewtable";
            SqlDataAdapter adapter = new SqlDataAdapter(cmdtext, con);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            //返回一个结果集
            return ds;    }
        private void CreateChildNode(TreeNode parentNode,string seldate)
        {
            DataTable dataTable1 = Bind().Tables[0];
            //筛选数据
            DataRow []rowList = dataTable1.Select("parentid='"+parentNode.Value+"'");
            foreach (DataRow row in rowList)
            {
                //创建新节点
                TreeNode node = new TreeNode();
                node.Text = row["nodename"].ToString();
                node.Value = row["nodeid"].ToString();
                node.NavigateUrl = row["url"].ToString();            node.Expanded = true;            //添加子节点
                parentNode.ChildNodes.Add(node);
                //递归调用,创建其他节点
                CreateChildNode(node, seldate);
            }
        }
      

  3.   


        /// <summary>
       /// 添加节点
       /// </summary>
       void addTreeView()
        {
            DataView dv = new DataView(GetSet().Tables[0]);
            AddTree(dv,-1, (TreeNode)null);
            
        }   /// <summary>
        /// 递归添加节点
        /// </summary>
        /// <param name="dvTree"></param>
        /// <param name="id"></param>
        /// <param name="pNode"></param>
        void AddTree(DataView dvTree, int id, TreeNode pNode)
            {
                
                //过滤ParentID,得到当前的所有子节点   
                string rowFilter = "ParentID=" + id;      
                dvTree.RowFilter = rowFilter;
                foreach (DataRowView Row in dvTree)
                {
                    TreeNode Node = new TreeNode();
                    if (pNode == null)
                    {         //添加根节点   
                        Node.Text = Row["Desc"].ToString();                    Node.Value = Row["CategoryID"].ToString();
                        TreeView1.Nodes.Add(Node);
                        Node.Expanded = true;
                        AddTree(dvTree, int.Parse(Row["CategoryID"].ToString()), Node);         //再次递归   
                    }
                    else
                    {       //添加当前节点的子节点   
                        Node.Text = Row["Desc"].ToString();                    Node.Value = Row["CategoryID"].ToString();
                        pNode.ChildNodes.Add(Node);
                        Node.Expanded = true;
                        AddTree(dvTree, int.Parse(Row["CategoryID"].ToString()), Node);          //再次递归   
                    }
                }
            }
      

  4.   

    你可以用datalist嵌套datalist实现,网上有很多嵌套的例子,我的就是嵌套出来的
      

  5.   

    数据库设计3个字段  id name parentId
    父级的parentId为-1,子级的parentId为父级的Id
    id  name  parentId
    1   文学   -1
    2   体育   -1
    3   语文   1
    4   数学   1
    5   篮球   2
    6   足球   2
      

  6.   

    不用那么多表吧,数据库设计3个字段 id name parentId这样就够用了
      

  7.   


    大哥 你里面的GetSet()方法  在哪里哦!  小弟新手  能把例子发我邮箱吗![email protected]
      

  8.   

    GetSet()就是一个得到DataSet的方法,返回一个DataSet