C#.net实现动态绑定TreeView

来源:互联网 发布:南京聚铭网络怎么样 编辑:程序博客网 时间:2024/04/30 04:57

原文来自:奥迪男 http://blog.sina.com.cn/s/blog_502a32050100dk8u.html

private DataSetbind()//创建函数获取数据库中TreeViewTable表中的数据到数据集ds中,然后返回数据集中的数据

 
   {
       //创建连接数据库对象,并读取web.config文件中连接数据库的字符串
       SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["con"].ConnectionString );
       //打开数据库
       con.Open();
       //定义查询数据库的字符串
       string cmdtext = "select * from TreeViewTable";
       //创建数据适配器
       SqlDataAdapter sda = new SqlDataAdapter(cmdtext, con);
       //创建数据集
       DataSet ds = new DataSet();
       //填充数据集合
       sda.Fill(ds);
       //返回数据机中的数据
       return ds;
    }
    private voidchildnode(TreeNode parentNode,string seldate)
    {
       //调用bind()函数获取数据,并将数据保存到datatable1数据表中
       DataTable datatable1 = bind().Tables[0];
       //选择数据
       DataRow[] rowList = datatable1.Select("parentid='"+parentNode.Value+"'");
       //Response.Write(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 = false ;//设定节点是否展开
           //添加子节点
           parentNode.ChildNodes.Add(node);
           //递归调用,创建其他节点(如果没有此项的话则只能显示到第二层)
           //Response.Write(node.Text);
           childnode(node ,seldate );
          
       }
    }
    public voidbandtree(string seldate)
    {
       //调用bind()函数获取数据
       DataTable datatable = bind().Tables[0];
       //清空树的所有节点
       TreeView1.Nodes.Clear();
       //创建一个数据行
       DataRow[] rowlist = datatable.Select("parentid='0'");
       //判断其中的数据是否为空
       if (rowlist.Length <= 0)
       {
           return;
       }
       //创建根节点
       TreeNode rootNode = new TreeNode();
       //设置根节点属性
       rootNode.Text = rowlist[0]["nodename"].ToString();
       rootNode .Value =rowlist [0]["nodeid"].ToString();//设置根节点的key值
       rootNode.Expanded = true  ;//树的根节点展开
       TreeView1.Nodes.Add(rootNode );
      //调用childnode()函数,创建其他子节点
       childnode(rootNode, seldate );
    }
    protectedvoid Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)
       {
           bandtree("0");
       }
    }