ASP.NET 讀數據庫綁定到 TreeView 遞歸方式

創建表及插入模擬數據:

CREATE TABLE [sysMenuTree](
[NoteId] [decimal](18, 0) NOT NULL,
[ParentId] [decimal](18, 0) NULL,
[sText] [nvarchar](50) NULL,
[sValue] [nvarchar](50) NULL,
[sURL] [nvarchar](50) NULL,
[sTarget] [nvarchar](50) NULL,
[Chger] [nvarchar](50) NULL,
[ChgTime] [nvarchar](50) NULL

 

insert into sysMenuTree values(3,0,N'目錄',N'目錄','','','','')
insert into sysMenuTree values(4,0,N'目錄',N'目錄','','','','')
insert into sysMenuTree values(5,0,N'目錄',N'目錄','','','','')
insert into sysMenuTree values(6,3,N'項目.1',N'項目.1','','','','')
insert into sysMenuTree values(7,3,N'項目.2',N'項目.2','','','','')
insert into sysMenuTree values(8,4,N'項目.1',N'項目.1','','','','')
insert into sysMenuTree values(9,4,N'項目.2',N'項目.2','','','','')
insert into sysMenuTree values(10,4,N'項目.3',N'項目.3','','','','')
insert into sysMenuTree values(11,5,N'項目.1',N'項目.1','','','','')
insert into sysMenuTree values(12,5,N'項目.2',N'項目.2','','','','')
在ASP.NET中讀取數據綁定到TreeView實現代碼:
 
 
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TreeView ID="treeMenu" runat="server">
        </asp:TreeView>
    </div>
    </form>
</body>
</html>
 
 
using System;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
  
public partial class _Default : System.Web.UI.Page 
{
    private readonly string ConnString = @"server=.\MSSQLSERVER2008;database=chart;uid=sa;pwd=123456";
    private DataTable dt = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            dt = new DataTable();
            GetMenuToDataTable("select * from sysMenuTree",dt);
            BindTree(dt,null,"0");
        }
    }
  
    private void BindTree(DataTable dtSource,TreeNode parentNode,string parentID)
    {
        DataRow[] rows = dtSource.Select(string.Format("ParentID={0}",parentID));
        foreach(DataRow row in rows)
        {
            TreeNode node = new TreeNode();
            node.Text = row["sText"].ToString();
            node.Value = row["sValue"].ToString();
            BindTree(dtSource,node,row["NoteId"].ToString());
            if(parentNode ==  null)
            {
                treeMenu.Nodes.Add(node);
            }
            else
            {
                parentNode.ChildNodes.Add(node);
            }
        }
    }
  
    private DataTable GetMenuToDataTable(string query,DataTable dt)
    {
        using(SqlConnection conn = new SqlConnection(ConnString))
        {
            SqlCommand cmd = new SqlCommand(query,conn);
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            ada.Fill(dt);
        }
        return dt;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章