我想做一个类似树状目录的一个块,有两层形如:
主类一:
  主类一中细类一
  主类一中细类二
  主类一中细类三
  主类一中细类四
主类二:
  主类二中细类一
  主类二中细类二
主类三:
  主类三中细类一
  主类三中细类二
  主类三中细类三
  主类三中细类四
  主类三中细类五
  主类三中细类六
我想数据能跟数据库中的数据改变来改变,不仅是主类,子类也能改变,各个子类中都带有连接,用什么控件来做?
用treeview控件的话数据能根据数据中的改变来改变吗?
怎么来设置其数据源?数据源的数据都来源于数据库!!!!
假如主类的数据源通过getdatasorce();可以获得,子类的数据根据getDEdatasorce(绑定主类字段做参数);可以获得,注意下面这有一个参数哦,谢谢大家了!!

解决方案 »

  1.   

    treeview,根据数据库里的菜单权限循环绑定就可以
      

  2.   

    先查询主表绑定一级菜单,在查询细表,根据主细关联字段再循环将二级菜单绑定到一级菜单上。DataRow[] dt0 = ds.Tables[主表].Select(条件);
    for (int i = 0; i < dt0.Length; i++)
    {
        TreeNode td0 = new TreeNode();
        td0.Text = dt0[i]["name"].ToString();
        td0.Value = dt0[i]["id"].ToString();
        td0.NavigateUrl = "javascript:alert();";
        DataRow[] dt1 = ds.Tables[细表].Select(条件);
        for (int j = 0; j < dt1.Length; j++)
        {
            TreeNode td1 = new TreeNode();
            td1.Text = dt1[j]["name"].ToString();
            td1.Value = dt1[j]["id"].ToString();
            td1.NavigateUrl = "javascript:alert();";
            td0.ChildNodes.Add(td1);
        }
        TreeView1.Nodes.Add(td0);
    }大概就是这个意思
      

  3.   

    //连接数据库
            string connStr = ConfigurationManager.ConnectionStrings["SqlConn"].ToString();
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            //获取大类作为接点循环添加到Treeview中
            string sql = "select * from class1 order by id desc";
            SqlCommand commd = new SqlCommand(sql, conn);
            SqlDataAdapter sda = new SqlDataAdapter(commd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            foreach (DataRow dr in dt.Rows)
            {
                TreeNode FatherNode = new TreeNode(dr["title"].ToString(), dr["id"].ToString());
                //TV是TreeView的ID
                TV.Nodes.Add(FatherNode);
                //获取子类循环添加到相应的接点下
                string sql1 = "select * from class2 oder where c1_id=" + Convert.ToInt32(dr["id"]);
                SqlCommand com = new SqlCommand(sql1, conn);
                SqlDataAdapter sa = new SqlDataAdapter(com);
                DataTable dt1 = new DataTable();
                sa.Fill(dt1);
                foreach (DataRow dr1 in dt1.Rows)
                {
                    TreeNode ChildNode = new TreeNode(dr1["title"].ToString(), dr1["id"].ToString());
                    FatherNode.ChildNodes.Add(ChildNode);
                }