栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.NET 树形菜单的实现

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.NET 树形菜单的实现

.NET 树形菜单的实现
先上最终图

分为 h5的代码 js的代码 和后台代码
h5的代码内容 要把 树形菜单“画”出来

class="col-sm-6 control-label" > 区域内容

然后就是js事件
需要引用两个js文件,请自行下载



然后就是对一些事件的实现的js代码


接下来就是 后台代码的实现

  protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                switch (Request["Type"])
                {
                    case "tree_Demo":
                        var result = DtToJson(null);
                        Response.Write(result);
                        Response.End();
                        break;
                    case "Read":  //查看结点详情
                        Read();
                        break;
                    case "Remove":  //删除结点
                        Response.Write(DataRemove(Request["arid"]));
                        break;
                    case "Cut":  //剪切结点
                        ChangeFatherNode();
                        break;
                    default:
                        //string s = DtToJson(null);
                        //this.ClientScript.RegisterStartupScript(this.GetType(), "DZL", "");
                        break;
                }
            }
        }

   
        protected string DtToJson(string Type)
        {
            string result = string.Empty;
            string ParentID = string.Empty;

            switch (Type)
            {
                case null://首次传进来是空的
                    {
                        result += CreateParent();
                        break;
                    }
            }

            if (result.Length > 0)
                result = "[rn" + result.Substring(1) + "rn]";
            JavaScriptSerializer json = new JavaScriptSerializer();
            return json.Serialize(new { value = result });
        }

        protected class AreaList
        {
            public int id { get; set; }
            public string name { get; set; }
            public string abbreviation { get; set; }
            public string pinyin_Abbreviation { get; set; }
            public int area_Type { get; set; }
            public string parent_Area { get; set; }
            public bool is_Provincial_Capital { get; set; }
            public int Count { get; set; }
        }


        /// 
        /// 创建顶级节点
        /// 
        /// 
        protected string CreateParent()
        {
            using (new DataContextScope())
            {
                string parentNode = string.Empty;
                string IsParent = string.Empty;
                AreaManageBLL areabll = new AreaManageBLL();
                var areas = areabll.getAllArea().Where(d => d.parent_Area == "-1");
                foreach (var ar in areas)
                {
                    IsParent = "false";
                    var menu = from q in areabll.getAllArea()
                               where q.parent_Area == ar.id.ToString()
                               select q;
                    if (menu.Count() > 0)
                    {
                        IsParent = "true";
                    }
                    parentNode += ",rn{id:'" + ar.id.ToString() + "',pId:'0',name:'" + ar.name
                        + "',region:'" + ar.parent_Area + "',open:false,isParent:" + IsParent + "}";

                    var groupList = from q in areabll.List()
                                    join child in areabll.List()
                                    on q.id.ToString() equals child.parent_Area
                                    group q by q.id into g                                                                                                 
                                    select new
                                    {
                                        g.Key,
                                        Count = g.Count()
                                    };

                    var AreaList = from q in areabll.List()
                                   join g in groupList on q.id equals g.Key
                                   into tempList
                                   from gList in tempList.DefaultIfEmpty()
                                   select new AreaList
                                  {
                                      id = q.id,
                                      name = q.name,
                                      abbreviation = q.abbreviation,
                                      pinyin_Abbreviation = q.pinyin_Abbreviation,
                                      area_Type = q.area_Type,
                                      parent_Area = q.parent_Area,
                                      is_Provincial_Capital = q.is_Provincial_Capital,
                                      Count = gList == null ? 0 : gList.Count,
                                  };

                    parentNode += CreateChild(AreaList, ar.id.ToString());
                }

                return parentNode;
            }
        }
        /// 
        /// 创建子节点
        /// 
        /// 数据筛选集合
        /// 父节点ID
        /// JSON拼接的节点信息
        protected string CreateChild(IQueryable AreaList, string Parentorg_id)
        {
            string IsParent = string.Empty;
            string parentNode = string.Empty;
            var ChildList = from q in AreaList
                            where q.parent_Area == Parentorg_id
                            orderby q.name
                            select q;

            var theOrg_id = string.IsNullOrEmpty(Request["arid"]) ? "" : Request["arid"]; //传过来的结点ID

            foreach (var child in ChildList)
            {
                if (child.id.ToString() != theOrg_id)  //为了不显示这个菜单
                {

                    IsParent = "false";
                    if (child.Count > 0)
                        IsParent = "true";

                    parentNode += ",rn{id:'" + child.id.ToString() + "',pId:'" + Parentorg_id + "',name:'"
                               + child.name + "',region:'" + child.parent_Area + "',isParent:" + IsParent + "}";

                    parentNode += CreateChild(AreaList, child.id.ToString());
                }
            }
            return parentNode;
        }

        public void Read()
        {
            string errinfo = string.Empty;
            string tableHtml = string.Empty;
            if (string.IsNullOrEmpty(Request["arid"]))
            {
                errinfo = "没有传递结ID!";
            }
            else
            {
                T_Area ar = new T_Area();
                AreaManageBLL areaBll = new AreaManageBLL();
                var area = areaBll.getAreaById(Request["arid"]);
                if (area == null)
                {
                    errinfo = "该组织信息不存在!";
                }
                else
                {
                    var ParentAreaInfo = areaBll.getAreaById(area.parent_Area);
                    var name = "";
                    if (ParentAreaInfo != null)
                    {
                        name = ParentAreaInfo.name;
                    }
                    tableHtml = "";
                    tableHtml += "";
                    tableHtml += "";
                    tableHtml += "";
                    tableHtml += "
区域编码" + area.area_Code + "
区域名称" + area.name + "
区域缩写" + area.pinyin_Abbreviation + "
区域拼音缩写" + area.abbreviation + "
区域类型" + DictionaryBll.GetObjectText("areaType", area.area_Type) + "
所属上级区域名称" + name + "
是否省会" + (area.is_Provincial_Capital == false ? "否" : "是") + "
"; } } Response.Write(errinfo == "" ? tableHtml : errinfo); Response.End(); } /// /// 删除 /// protected string DataRemove(string ID) { AreaManageBLL areaBll = new AreaManageBLL(); string str = ""; var childList = areaBll.List().Where(p => p.parent_Area == ID); if (childList.Count() > 0) { str = "该组织节点下存在子节点,请确保该节点下子节点为空,再删除该节点!"; } else { var area = areaBll.getAreaById(ID); area.status = 3; areaBll.SaveArea(area); str = "OK"; } return str; } /// /// 剪切 /// protected void ChangeFatherNode() { string Status = string.Empty, Error = string.Empty; if (!string.IsNullOrEmpty(Request["theOrgID"]) && !string.IsNullOrEmpty(Request["aimOrgID"])) { int ID = int.Parse(Request["theOrgID"]); string NewParentorg_id = Request["aimOrgID"]; AreaManageBLL areabll = new AreaManageBLL(); var area = areabll.getAreaById(Request["theOrgID"]); area.parent_Area = NewParentorg_id; //设置为新值 //Area_Edit ePage = new Area_Edit(); //area.area_Code = ePage.AddTraverseCode(area.parent_Area); try { areabll.SaveArea(area); Status = "Success"; } catch (Exception ex) { Status = "Fail"; Error = ex.Message; } } Response.Write("{"Status":" + Status + ","Error":" + Error + "}"); }

还有一个新增编辑的方法 不在这里 页面需要单独画 到这其实就能实现基本的增删改查 还有剪切功能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号