现在的位置: 首页 > 综合 > 正文

easyui+.net mvc(tree数据格式)

2019年11月15日 ⁄ 综合 ⁄ 共 2034字 ⁄ 字号 评论关闭

tree虽然不难,但还是比较麻烦的。

后台比较差的我,为了练手。

今天花了一下午的时间。写了一套转tree的方法。

现在总结一下代码,顺便分享给大家。希望高手指点

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using Horizon.Common;
using System.Text;
using Horizon.Model;

namespace Horizon.Models
{
    public static class TreeHelper
    {
        /// <summary>将DataTable转为Tree的JSON类型
        /// </summary>
        /// <typeparam name="T">表对象类型,用于attributes字段序列化</typeparam>
        /// <param name="dt">要转换的DataTable</param>
        /// <param name="id">指定标识字段</param>
        /// <param name="text">指定文本字段</param>
        /// <param name="_parentId">指定关系字段</param>
        /// <param name="iconCls">指定图标字段</param>
        /// <returns></returns>
        public static string ToTreeJSON<T>(this DataTable dt, string id, string text, string _parentId, string iconCls = "")
        {
            List<Tree<T>> _treeList = GetTree<T>(dt, id, text, _parentId, iconCls);
            var list = TreeFromat<T>(_treeList);
            return list.ToJSON();
        }

        private static List<Tree<T>> GetTree<T>(DataTable dt, string id, string text, string _parentId, string iconCls = "")
        {
            List<Tree<T>> _treeList = new List<Tree<T>>();
            foreach (DataRow dr in dt.Rows)
            {
                Tree<T> _tree = new Tree<T>();
                _tree.id = Convert.ToInt32(dr[id]);
                _tree.text = Convert.ToString(dr[text]);
                _tree._parentId = Convert.ToInt32(dr[_parentId]);
                _tree.attributes = dr.ToModel<T>();
                _treeList.Add(_tree);
            }
            return _treeList;
        }

        private static List<Tree<T>> TreeFromat<T>(List<Tree<T>> _treeList, int _parentId = 0)
        {
            var _list = _treeList.Where<Tree<T>>(p => p._parentId == _parentId).ToList();
            foreach (Tree<T> item in _list)
            {
                _treeList.Remove(item);
                item.children = TreeFromat(_treeList, item.id);
//递归
            }
            return _list;
        }

    }

    public class Tree<T>
    {
        public int id { get; set; }

        public string text { get; set; }

        public int _parentId { get; set; }

        public string iconCls { get; set; }

        public T attributes { get; set; }

        public List<Tree<T>> children { get; set; }
    }
}

调用:

        public string GetMenu()
        {
            return sql.GetDataTable("sys_menu").ToTreeJSON<sys_menu>("id", "menu_name", "parent_id");
        }

抱歉!评论已关闭.