• Treeview绑定数据库


    1.建立一个表,表中有三个字段,分别为id、父id、名称,然后往里面插入些数据   

    2.注意:如果没有父id则是空(NULL),什么东西也不要填写,必须是NULL  

    3 .aspx 页面上要添加一个Treeview1控件!

     

    4 .aspx.cs页面中的代码:  

    1. using System;  
    2. using System.Collections;  
    3. using System.Configuration;  
    4. using System.Data;  
    5. using System.Linq;  
    6. using System.Web;  
    7. using System.Web.Security;  
    8. using System.Web.UI;  
    9. using System.Web.UI.HtmlControls;  
    10. using System.Web.UI.WebControls;  
    11. using System.Web.UI.WebControls.WebParts;  
    12. using System.Xml.Linq;  
    13. using System.Data.SqlClient;  
    14. namespace Test  
    15. {  
    16.     public partial class TreeViewBind : System.Web.UI.Page  
    17.     {  
    18.         protected void Page_Load(object sender, EventArgs e)  
    19.         {  
    20.             if (!Page.IsPostBack)  
    21.             {  
    22.                 Bind_Tv(TreeBind(), TreeView1.Nodes, null"id""parent_id""name");                  
    23.             }  
    24.   
    25.         }  
    26.         public DataTable TreeBind()  
    27.         {  
    28.             SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Test;User ID=sa;Password=123456");  
    29.             SqlCommand cmd = new SqlCommand();  
    30.             cmd.CommandText = "select * from TreeView";  
    31.             cmd.Connection = con;  
    32.             con.Open();  
    33.             DataTable dt = new DataTable() ;  
    34.             dt.Load(cmd.ExecuteReader());  
    35.             con.Close();  
    36.             return dt;  
    37.   
    38.         }  
    39.   
    40.   
    41.         /// 绑定TreeView(利用TreeNodeCollection)  
    42.         /// </summary>  
    43.         /// <param name="tnc">TreeNodeCollection(TreeView的节点集合)</param>  
    44.         /// <param name="pid_val">父id的值</param>  
    45.         /// <param name="id">数据库 id 字段名</param>  
    46.         /// <param name="pid">数据库 父id 字段名</param>  
    47.         /// <param name="text">数据库 文本 字段值</param>  
    48.         private void Bind_Tv(DataTable dt, TreeNodeCollection tnc, string pid_val, string id, string pid, string text)  
    49.         {  
    50.             DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据  
    51.             TreeNode tn;//建立TreeView的节点(TreeNode),以便将取出的数据添加到节点中  
    52.             //以下为三元运算符,如果父id为空,则为构建“父id字段 is null”的查询条件,否则构建“父id字段=父id字段值”的查询条件  
    53.             string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);  
    54.             dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据  
    55.             foreach (DataRowView drv in dv)  
    56.             {  
    57.                 tn = new TreeNode();//建立一个新节点(学名叫:一个实例)  
    58.                 tn.Value = drv[id].ToString();//节点的Value值,一般为数据库的id值  
    59.                 tn.Text = drv[text].ToString();//节点的Text,节点的文本显示  
    60.                 tn.NavigateUrl = "Test1.aspx?id=" + drv["id"].ToString();//点击要到的页面  
    61.                 tnc.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中  
    62.                 Bind_Tv(dt, tn.ChildNodes, tn.Value, id, pid, text);//递归(反复调用这个方法,直到把数据取完为止)  
    63.             }  
    64.         }  
    65.           
    66.     }  
    67. }     

     原文:http://blog.csdn.net/cnceohjm/article/details/7761979

  • 相关阅读:
    Scoket简介
    AOP
    Windows服务
    Nginx 教程 (1):基本概念
    异步编程
    并发编程
    常用排序
    序列化
    MSBuild/Projectjson
    不汇报是职场发展的绊脚石
  • 原文地址:https://www.cnblogs.com/zhangxiaozhong/p/3269973.html
Copyright © 2020-2023  润新知