ASP.NET使用递归遍历TreeView树

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 _Default : System.Web.UI.Page
{

    private readonly string ConnString = @"server=.;database=userInfo;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");
            treeMenu.ShowLines = true;
            treeMenu.CollapseAll();
        }
    }

    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;
    }
}
原文地址:https://www.cnblogs.com/it-bobo/p/3860829.html