TreeGrid分页树形表格

先展示效果图:

加载treegrid的json数据格式有两种:

(1)基本的数据结构

[{
    "id":1,
    "name":"C",
    "size":"",
    "date":"02/19/2010",
    "children":[{
        "id":2,
        "name":"Program Files",
        "size":"120 MB",
        "date":"03/20/2010",
        "children":[{
            "id":21,
            "name":"Java",
            "size":"",
            "date":"01/13/2010",
            "state":"closed",
            "children":[{
                "id":211,
                "name":"java.exe",
                "size":"142 KB",
                "date":"01/13/2010"
            },{
                "id":212,
                "name":"jawt.dll",
                "size":"5 KB",
                "date":"01/13/2010"
            }]
        },{
            "id":22,
            "name":"MySQL",
            "size":"",
            "date":"01/13/2010",
            "state":"closed",
            "children":[{
                "id":221,
                "name":"my.ini",
                "size":"10 KB",
                "date":"02/26/2009"
            },{
                "id":222,
                "name":"my-huge.ini",
                "size":"5 KB",
                "date":"02/26/2009"
            },{
                "id":223,
                "name":"my-large.ini",
                "size":"5 KB",
                "date":"02/26/2009"
            }]
        }]
    },{
        "id":3,
        "name":"eclipse",
        "size":"",
        "date":"01/20/2010",
        "children":[{
            "id":31,
            "name":"eclipse.exe",
            "size":"56 KB",
            "date":"05/19/2009"
        },{
            "id":32,
            "name":"eclipse.ini",
            "size":"1 KB",
            "date":"04/20/2010"
        },{
            "id":33,
            "name":"notice.html",
            "size":"7 KB",
            "date":"03/17/2005"
        }]
    }] 

(2)_parentId的数据格式

{"total":7,"rows":[
    {"id":1,"name":"All Tasks","begin":"3/4/2010","end":"3/20/2010","progress":60,"iconCls":"icon-ok"},
    {"id":2,"name":"Designing","begin":"3/4/2010","end":"3/10/2010","progress":100,"_parentId":1,"state":"closed"},
    {"id":21,"name":"Database","persons":2,"begin":"3/4/2010","end":"3/6/2010","progress":100,"_parentId":2},
    {"id":22,"name":"UML","persons":1,"begin":"3/7/2010","end":"3/8/2010","progress":100,"_parentId":2},
    {"id":23,"name":"Export Document","persons":1,"begin":"3/9/2010","end":"3/10/2010","progress":100,"_parentId":2},
    {"id":3,"name":"Coding","persons":2,"begin":"3/11/2010","end":"3/18/2010","progress":80},
    {"id":4,"name":"Testing","persons":1,"begin":"3/19/2010","end":"3/20/2010","progress":20}
],"footer":[
    {"name":"Total Persons:","persons":7,"iconCls":"icon-sum"}
]} 

(3)带footer的_parentId数据格式

{"total":9,"rows":[
    {"id":1,"region":"Wyoming"},
    {"id":11,"region":"Albin","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1},
    {"id":12,"region":"Canon","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1},
    {"id":13,"region":"Egbert","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1},
    {"id":2,"region":"Washington"},
    {"id":21,"region":"Bellingham","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2},
    {"id":22,"region":"Chehalis","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2},
    {"id":23,"region":"Ellensburg","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2},
    {"id":24,"region":"Monroe","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}
],"footer":[
    {"region":"Total","f1":14000,"f2":12600,"f3":13321,"f4":15281,"f5":14931,"f6":13461,"f7":14126,"f8":12866}
]} 

示例:

前台代码:

 <div id="griddiv">
        <table id="tbMenu" class="easyui-datagrid">
        </table>
    </div>

逻辑代码:

DAL.cs
/// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="pageNumber"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public DataSet GetMenuListByPage(int pageNumber, int pageSize)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append(@"SELECT pageitem ,menuId AS id ,menuParId AS _parentId ,menuName ,menuCode ,menuUrl ,menuIcon AS iconCls ,updateBy ,sortId FROM ( SELECT ROW_NUMBER() OVER (ORDER BY sortId ASC) AS pageitem ,menuId ,menuParId ,menuName ,menuCode ,menuUrl ,menuIcon ,updateBy ,sortId FROM dbo.tb_menu  ");

            strSql.Append(@" ) a WHERE pageitem > " + pageSize * (pageNumber - 1) + "  AND   pageitem <= " + pageSize * (pageNumber) + "   ");

            strSql.Append(@"  SELECT COUNT(1) AS  itemcount  FROM  dbo.tb_menu   ");

            return DbHelperSQL.Query(strSql.ToString());
        }

BAL.cs
public List<Model_tb_menu> GetMenuListByPage(int pageNumber, int pageSize, out int itemcount)
        {
            DataSet ds = this.dal.GetMenuListByPage(pageNumber, pageSize);
            itemcount = 0;
            if (ds != null && ds.Tables.Count > 1 && ds.Tables[0].Rows.Count > 0 && ds.Tables[1].Rows.Count > 0)
            {
                itemcount = int.Parse(ds.Tables[1].Rows[0][0].ToString());
            }

            return ModelHandler<Model_tb_menu>.FillModel(ds.Tables[0]);
        }

MenuHandler.cs
private void LoadMenuDataByPage(HttpContext context)
        {
            int pageNumber = Request.GetFormInt("page", 1);
            int pageSize = Request.GetFormInt("rows", 15);
            int itemcount = 0;
            List<Model_tb_menu> list = new BLL_Menu().GetMenuListByPage(pageNumber, pageSize, out itemcount);

            var jobj = new JObject();
            jobj["total"] = itemcount;
            jobj["rows"] = (JArray)JToken.FromObject(list);

            Response.WriteJson(context, jobj.ToString());
        }

JS代码:

function searchData() {
        $("#tbMenu").treegrid({
            url: ‘/Handlers/MenuHandler.ashx?action=LoadMenuDataByPage‘,
            method: ‘post‘,
            pagination: true,
            pageNumber: 1,
            pageSize: 15,
            pageList: [15, 30, 50],
            singleSelect: true,
            idField: ‘id‘,
            treeField: ‘menuName‘,
            animate: true,
            fitColumns: true,
            rownumbers: true,
            columns: [[
                { field: ‘id‘, title: ‘menuId‘, hidden: true },
                { field: ‘menuName‘, title: ‘菜单名称‘, width: getWidth(0.1) },
                { field: ‘menuParName‘, title: ‘父节点‘, width: getWidth(0.1) },
                { field: ‘menuUrl‘, title: ‘链接地址‘, width: getWidth(0.15) },
                { field: ‘iconCls‘, title: ‘图标‘, width: getWidth(0.1) },
                { field: ‘menuCode‘, title: ‘标识码‘, hidden: true },
                { field: ‘sortId‘, title: ‘排序‘, hidden: true },
                { field: ‘updateBy‘, title: ‘最后修改人‘, width: getWidth(0.1) }
            ]]
        })

注意事项:

1. treegrid中id,_parentId,iconCls,state必须是这种写法,否则treegrid不认就渲染不出想要的结果

2. treeField: ‘menuName‘ 中的‘menuName’必须是能显示出来的,否则页面树结构加载不出来

3. _parentId如果没有值就传null或者不传,不可以赋值为0或者‘’(空字符串),否则页面树结构加载不出来

4. _parentId所代表的节点必须出现在json数据中,否则页面树结构加载不出来

原文地址:https://www.cnblogs.com/zhaoyl9/p/11365473.html

时间: 2024-08-29 16:21:18

TreeGrid分页树形表格的相关文章

bootstrap treegrid 实现树形表格结构

前言 :最近的项目中需要实现树形表格功能,由于前端框架用的是bootstrap,但是bootstrapTable没有这个功能所以就找了一个前端的treegrid第三方组件进行了封装.现在把这个封装的组件贴出来 大家共同讨论进步. 1 效果图 2 组件下载地址 链接: https://pan.baidu.com/s/1R8jIGXimeJwUcL7WyqZjDA 密码: ud96 3 组件的使用 3.1 在页面中引入如下的文件 <link href="~/Content/bootstrap/

Jquery easyui treegrid实现树形表格的行拖拽

前几天修改了系统的一个功能——实现树形列列表的行拖拽,以达到排序的目的.现在基本上功能实现,现做一个简单的总结. 1.拿到这个直接网上搜,有好多,但是看了后都觉得不是太复杂就是些不是特别想看的例子,自己太懒(对自己不是很熟悉的东西是不愿意第一去看的).结果选择良久,还是jquery easyui treegrid这个例子自己看起来比较熟悉.于是就专心研究了,从官方网站http://www.jeasyui.net/下载了demo,开始研读.先把jsp页面一些代码贴出 <link rel="s

easyUI中treegrid组件构造树形表格(简单数据类型)+ssm后台

这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查遍各种资料,几经实验,小编找到了一种使用简单数据类型的展示树形表格的方法.在这里介绍给大家,仅供参考: 框架使用的是ssm框架,数据库用的是oracle,其中数据库中要展示的表设计成大致如下的样子: 参考了一下easyUI的demo中给出的数据类型,如下格式: 打开里面显示如下: 这是一个json串

第二百二十八节,jQuery EasyUI,TreeGrid(树形表格)组件

jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使用方法,这个组件依赖于 DataGrid(数据表格)组件. 一.加载方式 建立一个 JSON 文件 [ { "id": 1, "name": "系统管理", "date": "2015-05-10", &quo

TreeGrid( 树形表格)

本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使用方法,这个组件依赖于DataGrid(数据表格)组件 一. 加载方式//建立一个 JSON 文件[{"id" : 1,"name" : "系统管理","date" : "2015-05-10","children" : [{"id" : 2,"name" : "主机信

ExtJS4.2学习(15)树形表格

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-27/185.html ------------------------------------------------------------------------------------------- 以下是完整代码: /** * Grid * 此js演示了ExtJS之树形表格 * 注意:在加载附件时要注意路径.如加载TreeStore——'tr

Vue+abp树形表格

项目中需要用到树形表格,其他同学找了一个ZkTable,我也就跟着用了,不太好用,有更好的记得联系我.先说下缺点,如果这些不能满足你,后面也没必要看了. 缺点如下(也可能我不会用,如果你会一定记得告诉我): 第一列不能使用模板数据,必须是简单的属性字段,也就不能使用自定义html标签了,如果你用了,不好意思,整个数据显示不出来 单选没有高亮(根本没有单选?),反正我用的多选框代替单选 模板使用的插槽而不是render函数,模板复选框绑定的数据只能单向绑定,即在界面点选可以修改属性值,但是修改属性

EXTJS 4 树形表格组件使用示例

EXTJS 4 树形表格组件使用示例 一.整体效果图 二.使用说明及效果图 2.1.程序代码及说明: 2.1.1.表格存储部分的代码说明 //开启tooltip工具 Ext.QuickTips.init(); //定义model Ext.define('partModel', { extend: 'Ext.data.Model', fields: [ {name: 'partNo', type: 'string'}, {name: 'partName', type: 'string'}, {na

基于Vue实现可以拖拽的树形表格实例详解

因业务需求,需要一个树形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合适的,大部分树形表格都没有拖拽功能,所以决定自己实现一个.这里分享一下实现过程,项目源代码请看github,插件已打包封装好,发布到npm上 本博文会分为两部分,第一部分为使用方式,第二部分为实现方式 安装方式 npm i drag-tree-table --save-dev 使用方式 import dragTreeTable from 'drag-tree-table'  模版写法 ? 1 <dragTr