zoukankan      html  css  js  c++  java
  • C#无限极分类菜单方法

    话不多说直接上代码

    我利用的是MVC5+EF做的。

    以下这部分是controller代码。


    public JsonResult Test() { List<Category> Categorylist = GetAllCategorys(); Category root = db.Categorys.Find(1); LoopToAppendChildren(root); return Json(root.ChildCategory, JsonRequestBehavior.AllowGet); } public void LoopToAppendChildren(Category curItem) { var subItems = GetCategorys(curItem.ID); curItem.ChildCategory = new List<Category>(); curItem.ChildCategory.AddRange(subItems); foreach (var subItem in subItems) { LoopToAppendChildren(all, subItem); } } public List<Category> GetCategorys(int ParentID) { var categorys = from s in db.Categorys orderby s.ID descending where s.CategoryParentID == ParentID select s; return categorys.ToList(); } public List<Category> GetAllCategorys() { var categorys = from s in db.Categorys orderby s.ID descending select s; return categorys.ToList(); }

     这部分是Category类代码

     public class Category
        {
            public int ID { get; set; }
            public string CategoryName { get; set; }
            public string CategoryInfo { get; set; }
            public int CategoryParentID { get; set; }
            public bool CategoryStatus { get; set; }
            public int CategorySort { get; set; }
            public List<Category> ChildCategory { get; set; }
        }
    

    主要就是这两个文件,此部分可以用于bootstrap treeview的使用,和面包屑导航栏的使用。

    //通用 ParentId,Id,children 用了反射效率不高,没测试
    
    public void LoopToAppendChildren<T>(List<T> all, T curItem, string parentIdName = "ParentId", string idName = "Id", string childrenName = "children")
    {
      var subItems = all.Where(ee => ee.GetType().GetProperty(parentIdName).GetValue(ee, null).ToString() == curItem.GetType().GetProperty(idName).GetValue(curItem, null).ToString()).ToList(); //新闻1
    
      curItem.GetType().GetField(childrenName).SetValue(curItem, subItems);
      foreach (var subItem in subItems)
      {
        LoopToAppendChildren(all, subItem);//新闻1.1
      }
     }
    

    参考文章:http://www.cnblogs.com/xuejianxiyang/p/5027280.html

  • 相关阅读:
    变动原因change事件
    获取一个Java项目的所有接口信息
    部署
    Apache Nutch(二)
    导论
    昨天去看了海,今天是第一天上班.心情不错.告诉自己要努力啊!
    从ASP.net Ajax 1.0 Beta 1升级到 ASP.net Ajax 1.0 Beta 2具体说明。
    好些天没有写什么了,不能懒散下去了,要重新振作起来。
    ComboBox怎么不绑定而设置Text和Value 网上收集
    使用无刷新技术,去请求该失效Session的页面,实现跳转到重新登陆页面。
  • 原文地址:https://www.cnblogs.com/jorzen1984/p/6602448.html
Copyright © 2011-2022 走看看