加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#无限级分类递归显示示例

发布时间:2020-12-15 17:52:55 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 %@ Page Language="C#" AutoEventWireup="true" CodeFile="RoleDemo20150305.aspx.cs" Inherits="RoleDemo20150305" % !DOCTYPE html PUBLIC "-//W3C/

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RoleDemo20150305.aspx.cs" Inherits="RoleDemo20150305" %>  
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
      
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title>C#无限级分类递归显示示例</title>  
        <style type="text/css">  
        span { float:left; clear:both;}  
        </style>  
        <script src="JS/jquery-1.9.1.js" type="text/javascript"></script>  
        <script type="text/javascript">  
            $(function () {  
                $("span").eq(0).show();  
                $("span").each(function (i) {  
                    var curr = $(this).attr("data-id");  
                    $(this).click(function () {  
                        $("span").each(function (i) {  
                            var father = $(this).attr("data-father");  
                            if (father == curr) {  
                                $(this).show();  
                            }  
                        });  
                    });  
                });  
            });  
        </script>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
        <div>  
            <asp:GridView ID="GridView1" runat="server">  
            </asp:GridView>  
      
            <br/><br/><br/><br/>  
            <asp:Literal ID="lt1" runat="server"></asp:Literal>  
        </div>  
        </form>  
    </body>  
    </html>  

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Web;  
    using System.Text;  
    using System.Data;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
      
    public partial class RoleDemo20150305 : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender,EventArgs e)  
        {  
            DataTable dt = createDT();  
            DataTable dtFinal = dt.Clone();  
            List<string> list = new List<string>();  
      
            string userStr = GetUserData();  
            if (userStr.Contains(","))  
            {  
                string[] strs = userStr.Split(',');  
                for (int i = 0; i < strs.Length; i++)  
                {  
                    list.Add(strs[i]);  
                }  
            }  
            else  
            {  
                list.Add(userStr);  
            }  
      
            for (int i = 0; i < list.Count; i++)  
            {  
                string module_id = list[i];  
                DataRow[] drSource = dt.Select(" module_id = '" + module_id + "'"); //最终DT是否存在该数据  
                DataRow[] drExist = dtFinal.Select(" module_id = '" + module_id + "'"); //最终DT是否存在该数据  
                if (drExist.Length == 0)  
                {  
                    dtFinal.Rows.Add(drSource[0]["module_id"],GetPreTag(drSource[0]["module_level"]) + drSource[0]["module_name"],drSource[0]["module_fatherid"],drSource[0]["module_url"],drSource[0]["module_order"],drSource[0]["module_level"]); //添加记录   
                }  
                FindFatherFromDT(dt,drSource,dtFinal);  
            }  
      
            //显示方式一  
            DataView dv = dtFinal.DefaultView;  
            dv.Sort = "module_id asc";  
            DataTable dtNeed = dv.ToTable();  
      
            GridView1.DataSource = dtNeed;  
            GridView1.DataBind();  
      
            //显示方式二  
            StringBuilder builder = new StringBuilder();  
            for (int i = 0; i < dtNeed.Rows.Count; i++)  
            {  
                DataRow dr = dtNeed.Rows[i];  
                builder.AppendLine("<span data-id='" + dr["module_id"] + "' data-father='" + dr["module_fatherid"] + "' style='display:none'>"  
                  + dr["module_name"] + "</span>");  
            }  
            lt1.Text = builder.ToString();  
        }  
      
      
        /// <summary>  
        /// 继续追溯添加父类记录   
        /// </summary>  
        /// <param name="dt"></param>  
        /// <param name="dtFinal"></param>  
        protected void FindFatherFromDT(DataTable dt,DataRow[] drFather,DataTable dtFinal)  
        {  
            DataRow[] drFatherUp = dt.Select(" module_id = '" + drFather[0]["module_fatherid"] + "'");  
            DataRow[] drFatherUpExist = dtFinal.Select(" module_id = '" + drFather[0]["module_fatherid"] + "'");  
            if (drFatherUp.Length > 0 && drFatherUpExist.Length == 0) //该记录存在父类且父类未添加到最终DT  
            {  
                dtFinal.Rows.Add(drFatherUp[0]["module_id"],GetPreTag(drFatherUp[0]["module_level"]) + drFatherUp[0]["module_name"],drFatherUp[0]["module_fatherid"],drFatherUp[0]["module_url"],drFatherUp[0]["module_order"],drFatherUp[0]["module_level"]); //继续追溯添加父类记录     
                FindFatherFromDT(dt,drFatherUp,dtFinal);  
            }  
        }  
     
        #region 添加前缀  
        protected string GetPreTag(object num)  
        {  
            string pre = string.Empty;  
            int i = Convert.ToInt32(num);  
            if (i < 2)  
            {  
      
            }  
            else if (i == 2)  
            {  
                pre += "└";  
            }  
            else  
            {  
                pre += "└";  
                for (int j = 0; j < i - 2; j++)  
                {  
                    pre += "─";  
                }  
            }  
            return pre;  
        }  
        #endregion  
     
        #region 用户测试数据  
        protected static string GetUserData()  
        {  
            DataTable dt = new DataTable();  
            dt.Columns.Add("userId");  
            dt.Columns.Add("userModuleOption");  
            dt.Rows.Add("张三","M01010305,M010205,M0101030301");  
            return dt.Rows[0]["userModuleOption"].ToString();  
        }  
        #endregion  
     
        #region 创建数据  
        protected static DataTable createDT()  
        {  
            DataTable dt = new DataTable();  
            dt.Columns.Add("module_id");  
            dt.Columns.Add("module_name");  
            dt.Columns.Add("module_fatherid");  
            dt.Columns.Add("module_url");  
            dt.Columns.Add("module_order");  
            dt.Columns.Add("module_level");  
      
            dt.Rows.Add("C1","全国","0","","1","1");  
            dt.Rows.Add("M01","广东","C1","2");  
      
            //深圳  
            dt.Rows.Add("M0101","深圳","M01","3.aspx","100","3");  
            dt.Rows.Add("M010101","南山区","M0101","4.aspx","1000","4");  
            dt.Rows.Add("M010102","罗湖区","1001","4");  
            dt.Rows.Add("M010103","福田区","1002","4");  
            dt.Rows.Add("M010104","宝安区","1003","4");  
            dt.Rows.Add("M010105","龙岗区","1004","4");  
      
            //深圳 - 福田区  
            dt.Rows.Add("M01010301","上梅林","M010103","1002001","5");  
            dt.Rows.Add("M01010302","下梅林","1002002","5");  
            dt.Rows.Add("M01010303","车公庙","1002003","5");  
            dt.Rows.Add("M01010304","竹子林","1002004","5");  
            dt.Rows.Add("M01010305","八卦岭","1002005","5");  
            dt.Rows.Add("M01010306","华强北","1002006","5");  
      
            //深圳 - 福田区 - 车公庙  
            dt.Rows.Add("M0101030301","天安数码城","M01010303","100200301","6");  
      
            //广州  
            dt.Rows.Add("M0102","广州","101","3");  
            dt.Rows.Add("M010201","越秀区","M0102","1105","4");  
            dt.Rows.Add("M010202","海珠区","1106","4");  
            dt.Rows.Add("M010203","天河区","1107","4");  
            dt.Rows.Add("M010204","白云区","1108","4");  
            dt.Rows.Add("M010205","黄埔区","1109","4");  
            dt.Rows.Add("M010206","荔湾区","1110","4");  
            dt.Rows.Add("M010207","罗岗区","1111","4");  
            dt.Rows.Add("M010208","南沙区","1112","4");  
            return dt;  
        }  
        #endregion  
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读