表user
编号 年级 班级 姓名
111  初一 1班 AA
112  初一 1班 BB
113  初一 2班 CC
114  初二 2班 DD
...
效果:
初一
-1班
--AA
--BB
-2班
--CC
初二
-2班
--DD
当点击AA时:打开student_detail.asp?ID={编号}
 

解决方案 »

  1.   

    看不出和其它绑定过程有什么区别,取数据的时候加个distinct而已
      

  2.   

    代码我就不写了,网上搜索一下就有的,TreeView的循环绑定
      

  3.   

      protected void Page_Load(object sender, EventArgs e)
        {        BindTreeView();    }    private void BindTreeView()
        {
            TreeNode node = new TreeNode();
            node.Expanded = true;
            node.Text = "所有数据";
            DataTable data1 = Dbase.GetTable(string.Format(@"Select distinct 年级 from table1"));
            for (int i = 0; i < data1.Rows.Count; i++)
            {
                string value=data1.Rows[i][0].ToString();
                TreeNode node1 = new TreeNode();
                node1.Text = value;
                CreateChildNode(node1, value);
                node.ChildNodes.Add(node1);
            }
            TreeView1.ShowLines = true;
            TreeView1.Nodes.Add(node);
        }    private void CreateChildNode(TreeNode node1, string value)
        {
            DataTable data2 = Dbase.GetTable(string.Format(@"Select distinct 班级 from table1 where 年级='{0}'",value));
            for (int i = 0; i < data2.Rows.Count; i++)
            {
                string value2 = data2.Rows[i][0].ToString();
                TreeNode node = new TreeNode();
                node.Text = value2;
                CreateNewNode(value, value2, node);
                node1.ChildNodes.Add(node);
            }
        }    private void CreateNewNode(string value, string value2, TreeNode node)
        {
            DataTable data3 = Dbase.GetTable(string.Format(@"select distinct 姓名 from table1 where 年级='{0}' and 班级='{1}'",value,value2));
            for (int i = 0; i < data3.Rows.Count; i++)
            {
                string value3 = data3.Rows[i][0].ToString();
                TreeNode node4 = new TreeNode();
                node4.Text = value3;
                node.ChildNodes.Add(node4);
            }
        }
      

  4.   

      protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindTreeView();
            }
        }    private void BindTreeView()
        {
            TreeNode node = new TreeNode();
            node.Expanded = true;
            node.Text = "所有数据";
            DataTable data1 = Dbase.GetTable(string.Format(@"Select distinct 年级 from table1"));
            for (int i = 0; i < data1.Rows.Count; i++)
            {
                string value=data1.Rows[i][0].ToString();
                TreeNode node1 = new TreeNode();
                node1.Text = value;
                CreateChildNode(node1, value);
                node.ChildNodes.Add(node1);
            }
            TreeView1.ShowLines = true;
            TreeView1.Nodes.Add(node);
        }    private void CreateChildNode(TreeNode node1, string value)
        {
            DataTable data2 = Dbase.GetTable(string.Format(@"Select distinct 班级 from table1 where 年级='{0}'",value));
            for (int i = 0; i < data2.Rows.Count; i++)
            {
                string value2 = data2.Rows[i][0].ToString();
                TreeNode node = new TreeNode();
                node.Text = value2;
                CreateNewNode(value, value2, node);
                node1.ChildNodes.Add(node);
            }
        }    private void CreateNewNode(string value, string value2, TreeNode node)
        {
            DataTable data3 = Dbase.GetTable(string.Format(@"select distinct 姓名 from table1 where 年级='{0}' and 班级='{1}'",value,value2));
            for (int i = 0; i < data3.Rows.Count; i++)
            {
                string value3 = data3.Rows[i][0].ToString();
                TreeNode node4 = new TreeNode();
                node4.Text = value3;
                node.ChildNodes.Add(node4);
            }
        }
      

  5.   

    感激不尽!再问:
    Dbase.GetTable()
    Dbase是什么,哪里来的?
      

  6.   

    Dbase是一个操作数据库的基类public class Dbase
    {
        private static string connString = @"Data Source=.;Initial Catalog=*** ID=**;PWD=***";       public static DataTable GetTable(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            try
            {
                conn.Open();
                sda.Fill(dt);
                return dt;
            }
            catch (SqlException ex)
            {
                throw;
            }
            finally
            {
                sda.Dispose();
                cmd.Dispose();
                conn.Close();
            }
        }}
      

  7.   

    用Dbase.GetTable() 
    的时候,我需要先在项目中建这个public class Dbase{}类吗,
      

  8.   


    是的,当然如果你项目中已经有了其它的数据库操作类,你也可以用自己项目中的,如SQLHelper等之类的
      

  9.   

    还是直接通过USING添加什么应用就可以了,