我是严格按实例操作的,但不知为何,只出顶级菜单,不递归子菜单,搞了一天了,郁闷了
恳请各位帮忙看看问题到底出在那里?
谢谢!运行结果:数据库:
View:
 @(Html.Kendo().TreeView()
 .Name("treeview")
 .DataSource(d => d
        .Model(m => m
            .Id("id")
            .HasChildren("hasChildren")
            .Children("Children"))
        .Read(r => r.Action("TreeResult", "Home")))
    .DataTextField("Name")
    .ExpandAll(true)
    )Controller: public JsonResult TreeResult(int? id)
        {
            TreeTablesRsy treeTablesRsy = new TreeTablesRsy();
            var treeTables = treeTablesRsy.List().Where(m => m.Pid == id || m.Pid == null)
                 .Select(p => new
                 {
                     id = p.TreeId,
                     Name = p.NodeName,
                     hasChildren = p.Items.Any(),
                     Children = p.Items
                 });
            return Json(treeTables, JsonRequestBehavior.AllowGet);
        }Model: public partial class TreeTables
    {
        public TreeTables()
        {
            this.Items = new HashSet<TreeTables>();
        }
        public virtual ICollection<TreeTables> Items { get; set; }
        /// <summary>
        /// id
        /// </summary>         
        [Display(Name = "TreeId")]
        [Key]
        public int TreeId { get; set; }
        /// <summary>
        /// p_id
        /// </summary>         
        [Display(Name = "Pid")]
        public int? Pid { get; set; }  
        /// <summary>
        /// name
        /// </summary>         
        [Display(Name = "NodeName")]
        public string NodeName { get; set; }
    }

解决方案 »

  1.   

    无人回答吗?郁闷死了。MVC树型结构难道没有好的方法吗?
      

  2.   

    ztreehttp://www.ztree.me/v3/api.php
      

  3.   


     @(Html.Kendo().TreeView()
     .Name("treeview")
     .DataSource(d => d
            .Read(r => r.Action("TreeResult", "Home")))
        .DataTextField("Name")
        )
     public JsonResult TreeResult(int? id)
            {
                TreeTablesRsy treeTablesRsy = new TreeTablesRsy();
                var treeTables = treeTablesRsy.List().Where(m => m.Pid == id)
                     .Select(p => new
                     {
                         id = p.TreeId,
                         Name = p.NodeName,
                         hasChildren = treeTablesRsy.List().Any(x => x.Pid == p.TreeId),
                         expanded = true
                     });
                return Json(treeTables, JsonRequestBehavior.AllowGet);
            }
     public partial class TreeTables
        {
            /// <summary>
            /// id
            /// </summary>         
            [Display(Name = "TreeId")]
            [Key]
            public int TreeId { get; set; }
            /// <summary>
            /// p_id
            /// </summary>         
            [Display(Name = "Pid")]
            public int? Pid { get; set; }  
            /// <summary>
            /// name
            /// </summary>         
            [Display(Name = "NodeName")]
            public string NodeName { get; set; }
        }