您的位置:首页 > 编程语言 > ASP

asp.net TreeView动态绑定数据库显示数据

2009-11-16 15:40 681 查看
 假设在数据库中建立一张表, 如tb_treeview,如下创建
         create table tb_treeview(
                    id  int not null,
                    displayName varchar(20),
                    parentId int ,
                    url varchar(100)
            );
 
向表中插入几个数据如:
       insert into tb_treeview(1,'中国',0,'');
       insert into tb_treeview(2,'安徽省',1,'');
       insert into tb_treeview(3,'合肥市',2,'');
       insert into tb_treeview(4,'江苏省',1,'');
       insert into tb_treeview(5,'南京市',4,'');
       insert into tb_treeview(6,'湖北省',1,'');
 
作为演示数据。
(1)、打开VS2005,新建一个网站项目,在Default.aspx.cs文件里添加如下代码:
...
   using System.Data.SqlClient;
  ....
   DataTable dt = new DataTable();
   public void Page_Load(object sender,EventArgs e)
   {
        if(!IsPostBack)
        {
               try
               {
                      string conString = "Data Source=.;uid=sa;pwd=;Database=master";
                      SqlConnection con = new SqlConnection(conString);
                      con.Open();
                      string strSQL = "select * from tb_treeview";
                      SqlDataAdapter da = new SqlDataAdapter(strSQL,con);
                      da.Fill(dt);
               }
               catch(Exception e)
               {
 
               }
               finally
               {
                     con.Close();
               }
               AddTreeNode(0,(TreeNode)null);
        }
   }
 
   protected void AddTreeNode(int parentId,TreeNode pNode)
   {
            TreeNode tn1 = new TreeNode(); 
            DataView dv= new DataView(dt);
            //过滤parentId,得到当前节点的所有子节点
            dv.RowFilter = "parentId="+parentId;
             foreach(DataRowView drv in dv)
             {
                   if(pNode==null)
                   {
                          tn1.Text = drv["displayName"].ToString(); //节点上要显示的名称
                          tn1.NavigateUrl = drv["url"].ToString();  //点击节点名称,跳转到指定url页面
                          TreeView1.Nodes.Add(tn1); //将根节点加入到TreeView中去
                          tn1.Expanded = true;
                          //递归调用
                          AddTreeNode(Int32.parse(drv["id"].ToString()),tn1);
                   }
                   else
                   {
                          TreeNode tn2 = new TreeNode();
                           tn2.Text = drv["displayName"].ToString();
                           tn2.NavigateUrl = drv["url"].ToString();
                           pNode.ChildNodes.Add(tn2);
                           tn1.Expanded = true;
                           //递归调用
                           AddTreeNode(Int32.parse(drv["id"].ToString()),tn2);
                   }
             }
   }
 
(2)、在浏览器中运行,打开效果如下
            +中国
             |+安徽省
             |  |_合肥市
             |+江苏省
             |   |_南京市
             |+湖北省
需要说明的是,在实际开发中,关于数据库的数据访问应该放在DAL层里,这里只是做简单的演示而已。
如果想改变已经选择的节点,和移动到该节点时字体的呈现颜色的话,可以这样设置:
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True" CssClass="Menu">
            <RootNodeStyle  ForeColor="red"/>
            <SelectedNodeStyle ForeColor="gray" />
            <HoverNodeStyle ForeColor="aqua" />
</asp:TreeView>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息