TreeView控件中结点的自动生成

来源:互联网 发布:淘宝vip会员设置 编辑:程序博客网 时间:2024/05/11 12:57

 写网站的时候,想让TreeView控件根据数据库中的字段自动生成父节点及对应的子结点,研究了半天终于搞定。。。

    TreeView对应的后台代码为:(数据库名FlowControl,表名test,)

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

            //连接数据库,连接串自己改一下。
            SqlConnection conn = new SqlConnection(@"Data Source=localhost;Initial Catalog=dbo.FlowControl;User ID=sa;Pwd=123456;");
            SqlCommand cmd = new SqlCommand("select ProgramName from test group by ProgramName", conn);    //对数据库操作.


            //下面这三步 目前可以当做公司来套. 先New个 SqlDataAdapter和 DataSet对象。再用Fill方法填充;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);      //new一个适配器对象
            DataSet ds = new DataSet();              //new一个数据集对象
            sda.Fill(ds, "test");                              //把test表fill到数据集里

            TreeNode xin = new TreeNode("流程控制");       //根节点命名为:流程控制
            for (int i = 0; i < ds.Tables["test"].Rows.Count; i++)                                                                                  //这里的 ds.Tables["test"].Rows.count表示数据集里test表里总的行数,这有两行,可以建表执行下这个语句
 

            select ProgramName from test group by ProgramName            

            {
                string programName = ds.Tables["test"].Rows[i]["ProgramName"].ToString();

                                                 ///把test表里第一行中ProgramName列中的内容转为字符串
                TreeNode Node = new TreeNode(programName);    

                                     //new一个对象;当i 为0时 ,programName='杭电施工'  1时.理工施工.
                string strCmd = "select HouseName FROM test where ProgramName='" + programName + "'";                               ///选出杭电施工
                SqlCommand _cmd = new SqlCommand(strCmd, conn);
                SqlDataAdapter _sda = new SqlDataAdapter(_cmd);
                DataSet _ds = new DataSet();
                _sda.Fill(_ds, "test");
                for (int j = 0; j < _ds.Tables["test"].Rows.Count; j++)
                {
                    string HouseName = _ds.Tables["test"].Rows[j]["HouseName"].ToString();
                    TreeNode _Node = new TreeNode(HouseName);
                    Node.ChildNodes.Add(_Node);              ///把HouseName里选出的东西放进杭电施工
                }
                xin.ChildNodes.Add(Node);       ///把杭电施工放进流程控制
               
            }
    
            this.TreeView1.Nodes.Add(xin);    ///把整个树形结构放进TreeView中
        }
    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        this.label1.Text = this.TreeView1.SelectedValue;//这个我只是拿来测试结点的点击事件。
    }
}

 

 

  

原创粉丝点击