asp.net动态生成TreeView

来源:互联网 发布:windows phone最新手机 编辑:程序博客网 时间:2024/05/17 01:58
 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 left : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       GetTreeView();
    }
    private void GetTreeView()
    {
        try
        {
            string connectionstring = "Server=(local);uid=sa;pwd=123456;database=web";//连接SQL数据库
            SqlConnection conn = new SqlConnection(connectionstring);
            string sql = "select * from menu where menu_level=1 and parent_id =0";//查询一级节点
            SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
            DataSet ds1 = new DataSet();
            adapter.Fill(ds1, "temp");
            DataTable table1 = ds1.Tables["temp"];//把读取的数据放入DATATABLE中
            TreeView1.Nodes.Clear();//建立根节点,遍历。
            foreach (DataRow dr1 in table1.Rows)
            {
                TreeNode root = new TreeNode();
                root.Text = dr1["menu_name"].ToString();
                TreeView1.Nodes.Add(root);//建立根节点
                string sql2 = "select * from menu where menu_level=2 and parent_id='" + dr1["id"] + "'";
                SqlDataAdapter adapter2 = new SqlDataAdapter(sql2, conn);
                DataSet ds2 = new DataSet();
                adapter2.Fill(ds2, "temp2");
                DataTable table2 = ds2.Tables["temp2"]; //建立子节点,遍历。
                foreach (DataRow dr2 in table2.Rows)
                {
                    TreeNode Node = new TreeNode();
                    Node.Text = dr2["menu_name"].ToString();
                    Node.Target = "main";//目标窗口和框架,需要defult设置主框架名为MAIN
                    Node.NavigateUrl = "list.aspx?table_name=" + dr2["talbel_name"]+"&type_id="+dr2["type_id"];
                    root.ChildNodes.Add(Node);//建立子节点
                }

            }
            conn.Close();
        }
        catch (SqlException ex)
        {
            throw ex;
        }
        finally
        {
          Reseponse.Write("ok");
        }

    }
}

SQL脚本:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[menu]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[menu]
GO

CREATE TABLE [dbo].[menu] (
[id] [int] NOT NULL ,
[menu_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[menu_level] [int] NOT NULL ,
[parent_id] [int] NOT NULL ,
[talbel_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[type_id] [int] NOT NULL
) ON [PRIMARY]
GO