public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataView dv = drv("select * from bid");//声明一个视图,调用drv方法、
            foreach (DataRowView datatav in dv)
            {
                //循环数据视图,将对应的值交给一个节点对象,然后添加到树上有继续添加。迭代数据视图的所有行。
                TreeNode tn = new TreeNode();          //实例化一个节点对象
                tn.Text = datatav["title"].ToString();//给tn添加text属性
                tn.Value = datatav["bid"].ToString();//给tn添加value属性
                tn.Expanded = false;                //设置当前节点是折叠还是展开,这里设为折叠。
                TreeView1.Nodes.Add(tn);            //把已经填充好的节点对象填充到 TreeView1树中去
                AddchildNodes(tn);            }
        }
    }
    private DataView drv(string query)
    {
        //根据传来的字符串返回一个数据视图
        string connstr = ConfigurationManager.ConnectionStrings["testconn"].ConnectionString;
        SqlConnection con = new SqlConnection(connstr);
        SqlDataAdapter sda = new SqlDataAdapter(query,con);
        DataSet ds = new DataSet();
        sda.Fill(ds,"tree");
        return ds.Tables["tree"].DefaultView;    }
    private void AddchildNodes(TreeNode tn)
    {//填充二级节点,它需要一级节点的value,所以干脆送一个完整的根节点对象。
        int bid = Convert.ToInt32(tn.Value);
        DataView dv = drv("select * from class where bid='"+bid+"'");
        foreach (DataRowView datav in dv)
        {
            TreeNode ctn = new TreeNode();
            ctn.Text = datav["title"].ToString();
            ctn.Value = datav["cid"].ToString();
            ctn.NavigateUrl = "default.aspx?aa=" + datav["cid"].ToString();
            tn.ChildNodes.Add(ctn);
        }        
    }}

解决方案 »

  1.   

       DataView dv = drv("select * from yn_news_class");//声明一个视图,调用drv方法、
                foreach (DataRowView datatav in dv)
                {
                    //循环数据视图,将对应的值交给一个节点对象,然后添加到树上有继续添加。迭代数据视图的所有行。
                    CheckBox tn = new CheckBox();          //实例化一个节点对象
                    tn.Text = datatav["ClassCName"].ToString();//给tn添加text属性
                    tn.Value = datatav["ClassID"].ToString();//给tn添加value属性
                    //tn.Expanded = false;                //设置当前节点是折叠还是展开,这里设为折叠。
                    //TreeView1.Nodes.Add(tn);            //把已经填充好的节点对象填充到 TreeView1树中去
                    CHBCheck.Items.Add(tn);
                   
                    AddchildNodes(tn);            }
            }
        }    private void AddchildNodes(CheckBox tn)
        {//填充二级节点,它需要一级节点的value,所以干脆送一个完整的根节点对象。
            int ClassID = Convert.ToInt32(tn.Value);
            DataView dv = drv("select * from class where ClassID='" + ClassID + "'");
            foreach (DataRowView datav in dv)
            {
                CheckBox ctn = new CheckBox();
                ctn.Text = datav["ClassCName"].ToString();
                ctn.Value = datav["ClassID"].ToString();
                ctn.NavigateUrl = "admin_POPSet.aspx?aa=" + datav["ClassID"].ToString();
                tn.i
                //tn.ChildNodes.Add(ctn);
            }
        }