动态加载TreeView

/*后台代码*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TreeViewTest
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                CreateTreeView();
            }

        }
        /// <summary>
        /// 创建TreeView
        /// 此方法采取一次性加载目标数据到DataTable,递归查询DataTable,创建子节点
        /// </summary>
        private void CreateTreeView()
        {
            const int VirtualNodeId = 0;//虚拟根节点
            const string SqlStr = "select * from TreeDemo order by NodeID asc";
            string connStr = @"Data Source=ANLANTAN\SQLEXPRESS;Initial Catalog=vote;Integrated Security=True";
            SqlDataAdapter da = new SqlDataAdapter(SqlStr, connStr);
            DataTable dt = new DataTable();
            da.Fill(dt);
            CreateTreeViewRecursive(TreeMenu.Nodes, dt, VirtualNodeId);
        }

        private void CreateTreeViewRecursive(TreeNodeCollection nodes, DataTable dataSourse, int parentId)
        {
            string filter = string.Format("ParentId={0}", parentId);
            //查询子节点
            DataRow[] drArr = dataSourse.Select(filter);

            TreeNode node;
            foreach (DataRow dr in drArr)
            {
                node = new TreeNode();
                nodes.Add(node);
                node.Text = (string)dr["NodeName"];
                //node.Collapse();
                //node.Expand();
                //node.ExpandAll();
                //node.ShowCheckBox = true;
                node.ToolTip = node.Text;
                //递归创建子节点
                CreateTreeViewRecursive(node.ChildNodes, dataSourse, (int)dr["NodeID"]);
            }
        }
    }
}
  <%--  前台代码--%>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TreeView runat="server" ImageSet="Contacts" NodeIndent="10" ID="TreeMenu">
            <ParentNodeStyle Font-Bold="True" ForeColor="#5555DD" />
            <HoverNodeStyle Font-Underline="False" />
            <SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" 
                VerticalPadding="0px" />
            <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" 
                HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />
        </asp:TreeView>
    </div>
    </form>
</body>

posted on 2010-01-06 14:52  anlantan  阅读(3146)  评论(0编辑  收藏  举报

导航