MVC4 使用 easyui treegrid 展示数据

//数据格式

public class BaseVo
    {
        public int ID { get; set; }
        [DisplayName("版本号")]
        public Nullable<int> Version { get; set; }
        [DisplayName("开始生命周期/输入时间")]
        public Nullable<System.DateTime> StartLifeCycle { get; set; }
        [DisplayName("结束生命周期")]
        public Nullable<System.DateTime> EndLifeCycle { get; set; }
        [DisplayName("编号")]
        public string Code { get; set; }
        [DisplayName("名称")]
        public string Name { get; set; }
        [DisplayName("输入人")]
        public string InputUser { get; set; }
        [DisplayName("更新人")]
        public string UpdateUser { get; set; }
        [DisplayName("更新时间")]
        public Nullable<System.DateTime> UpdateTime { get; set; }

        public BaseVo() { }

        public BaseVo(string code, string name)
        {
            this.Code = code;
            this.Name = name;
        }

        public BaseVo(int id,string code, string name)
        {
            this.ID = id;
            this.Code = code;
            this.Name = name;
        }

        public BaseVo(int id, int? version,string code, string name)
        {
            this.ID = id;
            this.Version = version;
            this.Code = code;
            this.Name = name;
        }

        public BaseVo(int id, int? version, DateTime? startLifeCycle, DateTime? endLifeCycle,string code, string name)
        {
            this.ID = id;
            this.Version = version;
            this.StartLifeCycle = startLifeCycle;
            this.EndLifeCycle = endLifeCycle;
            this.Code = code;
            this.Name = name;
        }

        public BaseVo(int id, int? version, DateTime? startLifeCycle, DateTime? endLifeCycle,
            string code, string name, string inputUser, string updateUser, DateTime? updateTime)
        {
            this.ID = id;
            this.Version = version;
            this.StartLifeCycle = startLifeCycle;
            this.EndLifeCycle = endLifeCycle;
            this.Code = code;
            this.Name = name;
            this.InputUser = inputUser;
            this.UpdateUser = updateUser;
            this.UpdateTime = updateTime;
        }
    }

//treegrid 需要 一个字段区分子父关系('_parentId','children'),这里使用children

public class SysMenuVo : BaseVo
    {
        public string Iconic { get; set; }
        public string Comment { get; set; }
        public string Url { get; set; }

        public List<SysMenuVo> children { get; set; }

        public SysMenuVo()
        {
            this.children = new List<SysMenuVo>();
        }

        public SysMenuVo(int id, int? version, DateTime? startLifeCycle, DateTime? endLifeCycle,
            string code, string name, string inputUser, string updateUser, DateTime? updateTime,
             string url, string iconic, string comment)
            : base(id, version, startLifeCycle, endLifeCycle, code, name, inputUser, updateUser, updateTime)
        {
            this.children = new List<SysMenuVo>();
            this.InputUser = inputUser;
            this.Url = url;
            this.Iconic = iconic;
            this.Comment = comment;
        }
    }  

 


//服务层 数据查询组装

public List<SysMenuVo> FindAllMenu()
        {
            List<SysMenuVo> vos = new List<SysMenuVo>();
            using (RepositoryContextManager manager = new RepositoryContextManager())
            {
                IRepository<SysMenu> menuRpt = manager.GetRepository<SysMenu>();
                List<SysMenu> sMenu = menuRpt.GetAll(Specification<SysMenu>.Eval(r => r.EndLifeCycle > DateTimeHelper.GetSysDateTime() &&
                    r.ParentSysMenu == null)).ToList();

                foreach (var item in sMenu)
                {
                    vos.Add(MenuTree(item));
                }
                return vos;
            }
        }

        private SysMenuVo MenuTree(SysMenu menu)
        {
            SysMenuVo vo = new SysMenuVo(menu.ID, menu.Version, menu.StartLifeCycle, menu.EndLifeCycle, menu.Code, menu.Name,
                menu.InputUser, menu.UpdateUser, menu.UpdateTime, menu.Url, menu.Iconic, menu.Comment);
            if (menu.SysChildMenus.Count != 0)
            {
                foreach (var item in menu.SysChildMenus)
                {
                    if (item.EndLifeCycle < DateTimeHelper.GetSysDateTime()) continue;
                    SysMenuVo cVo = MenuTree(item);
                    vo.children.Add(cVo);
                }
            }
            return vo;
        }

 //控制器的使用

 

public JsonResult GetMenuInfo()
        {
            Dictionary<string, object> json = new Dictionary<string, object>();
            ICollection<SysMenuVo> vos = new List<SysMenuVo>();
            try
            {
                ISysManageServices service = ServiceLocator.Instance.GetService<ISysManageServices>();
                vos = service.FindAllMenu();
                if (vos.Count == 0)
                {
                    message = StringMessage.NOT_FIND_DATA;
                    json.Add("message", message);
                }
            }
            catch (Exception ex)
            {
                message = ex.Message + GetInnerException(ex).Message;
                MonitorLog.Exception = message;
                LogHelper.ErrorInfo(MonitorLog);
                json.Add("message", StringMessage.SYSTEM_BUG + "<br />" + message);
            }
            json.Add("total", vos.Count);
            json.Add("rows", vos.Skip(Rows * (Page - 1)).Take(Rows).ToList());
            return Json(json, JsonRequestBehavior.DenyGet);
        }

 

//cshtml使用

 

@{
    ViewBag.Title = "MenuManage";
    Layout = "~/Views/Shared/_LayoutEasyUI.cshtml";
}

<div id="myLayout" class="easyui-layout" data-options="fit:true">
    <div data-options="region:'west',title:'菜单列表',split:true" style="width:600px;">
        <table id="menu" style="width:600px;height:600px"></table>

    </div>
    <div data-options="region:'center',title:'操作',fit:true" style="padding:5px;background:#eee;">
        <div class="divW500">
            <ul>
                <li><a href="javascript:void(0)" class="easyui-linkbutton" id="btnAdd" data-options="iconCls:'icon-add'">增加</a></li>
                <li><a href="javascript:void(0)" class="easyui-linkbutton" id="btnUpdate" data-options="iconCls:'icon-edit'">修改</a></li>
                <li><a href="javascript:void(0)" class="easyui-linkbutton" id="btnDelete" data-options="iconCls:'icon-remove'">删除</a></li>
                <li><a href="javascript:void(0)" class="easyui-linkbutton" id="btnReload" data-options="iconCls:'icon-reload'">刷新</a></li>
            </ul>
        </div>
        @Html.LabelFor(dto => dto.Name)
        @Html.TextBoxFor(dto => dto.Name, htmlAttributes: new { })
    </div>
</div>

<script>
    $('#menu').treegrid({
        url: '/Account/GetMenuInfo',
        idField: 'ID',
        treeField: 'Name',
        columns: [[
            { field: 'Name', title: '名称', width: 120 },
            { field: 'Code', title: '编号', width: 80, align: 'left' },
            { field: 'Url', title: '地址', width: 120 },
            { field: 'Iconic', title: '图标', width: 120 },
            { field: 'Comment', title: '备注', width: 120 },
            { field: 'InputUser', title: '创建人', width: 120 },
            { field: 'UpdateUser', title: '更新人', width: 120 },
            { field: 'UpdateTime', title: '更新时间', width: 120 }
        ]]
    });
</script>

 

页面展示效果

 

posted @ 2016-04-29 17:36  rjDing  阅读(308)  评论(0编辑  收藏  举报