分享

C#生成无限级别菜单 treeview绑定数据库 实践成果

 昵称10504424 2013-02-18

表 UserInfo

ID               ID

Name      导航名称

SuperiorID  上级导航ID

 

 

 

 

 

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

namespace Test
{
    public partial class TreeviewBD : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                BindTree();
        }
        private void BindTree()
        {
        DataTable dt = sencondNMClass.GetList("").Tables[0];//获取数据源
        int s = dt.Rows.Count;//
        DataView dv = new DataView(dt);
        dv.RowFilter = "SuperiorID=0";
        foreach (DataRowView drv in dv)
        {
            TreeNode node = new TreeNode();
            node.Text = drv["Name"].ToString();//显示的文本
            node.Value = drv["ID"].ToString();//不显示的 文本 值
            node.SelectAction = TreeNodeSelectAction.None;//不引发事件
            //node.ImageUrl = "~/images/folder.GIF";//节点旁边显示的节点
            node.Expanded = true;//是否展开节点
            TreeView1.Nodes.Add(node);//添加到根节点
            AddReplies(dt, node);//递归函数
        }


        }

       /// <summary>
    /// TreeView
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="node"></param>
    protected void AddReplies(DataTable dt, TreeNode node)
    {
        DataView dv = new DataView(dt);
        dv.RowFilter = "SuperiorID='" + node.Value + "'";//过滤 node。Value 为上级的treeNode 值
        foreach (DataRowView row in dv)
        {
            TreeNode replyNode = new TreeNode();//新建一个节点
            replyNode.Text = row["Name"].ToString();//显示的文本
            replyNode.Value = row["ID"].ToString();//不显示的 文本 值
            replyNode.Expanded = false;
            node.ChildNodes.Add(replyNode);//添加到子节点
            AddReplies(dt, replyNode);//继续递归函数
        }
    }

    }
}

注:使用AddReplies递归函数时应注意节点的设置AddReplies(dt, replyNode)

HTML页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TreeviewBD.aspx.cs" Inherits="Test.TreeviewBD" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www./1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
        <asp:TreeView ID="TreeView1" runat="server">
        </asp:TreeView>

   
    </div>
    </form>
</body>
</html>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多