zoukankan      html  css  js  c++  java
  • [Asp.NET MVC+EasyUI] TreeGrid全部加载及懒加载示例

    本篇文主要对EasyUI中TreeGrid组件的使用进行演示。对于正在学此组件的童鞋,不防花个几分钟看一下。本文主要演示:TreeGrid的简单应用、懒加载方法、控件数据格式。

    TreeGrid组件是由DataGrid集成而来,可以使行与行之间存在父子关系,是一种树形网格组件。

    1. 创建简单示例

      通过post方式调用后端数据,将数据展示到前端,具体代码如下:

       1.1 前端代码

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>TreeGridDemo</title>
        <link href="/Scripts/easyui/themes/icon.css" rel="stylesheet" />
        <link href="/Scripts/easyui/themes/metro-blue/easyui.css" rel="stylesheet" />
        <script src="/Scripts/jquery-1.9.1.min.js"></script>
        <script src="/Scripts/easyui/jquery.easyui.min.js"></script>
    </head>
    <body>
        <table id="TreeDemo" title="Folder Browser" class="easyui-treegrid" style=" 400px; height: 300px"
            url="/TreeGridShow/ShowTreeGridJson"
            rownumbers="true"
            idfield="id" 
            treefield="name">
            <thead>
                <tr>
                    <th field="name" width="160">Name</th>
                    <th field="remark" width="160" align="right">Remark</th>
                </tr>
            </thead>
        </table>
    </body>
    </html>
    

      1.2 后端代码

         [HttpPost]
            public JsonResult ShowTreeGridJson()
            {
                List<ColorPanal> colorList = new List<ColorPanal>() { 
                    new ColorPanal() { id = "1", name = "所有颜色", remark="all", _parentId = ""},
                    new ColorPanal() { id = "2", name = "冷色", remark="二级", _parentId = "1"},
                    new ColorPanal() { id = "3", name = "白色", remark="二级", _parentId = "2",state="closed"},//添加state状态为closed可以标识此节点下有子集
                    new ColorPanal() { id ="4", name = "蓝色", remark="二级", _parentId = "2" },
                    new ColorPanal() { id = "5", name = "暖色", remark="二级", _parentId = "1" },
                    new ColorPanal() { id = "6", name = "混和", remark="二级", _parentId ="1" }
                };
    
                return Json(new DataGridModel
                {
                    total = colorList.Count(),//总行数
                    rows = colorList.ToList().ConvertAll(p => new
                    {
                        p.id,
                        p.name,
                        p.remark,
                        p.state,
                        p._parentId
                    })
                });
            }  
      
       public class ColorPanal
        {
            public string id, name, remark, _parentId, state;
        }
    
        public class DataGridModel
        {
            public int total { get; set; }
            public IEnumerable<object> rows { get; set; }
        }

      1.3 效果展示

    2. 懒加载示例

      2.1实现代码

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>TreeGridDemo</title>
        <link href="/Scripts/easyui/themes/icon.css" rel="stylesheet" />
        <link href="/Scripts/easyui/themes/metro-blue/easyui.css" rel="stylesheet" />
        <script src="/Scripts/jquery-1.9.1.min.js"></script>
        <script src="/Scripts/easyui/jquery.easyui.min.js"></script>
    </head>
    <body>
        <table id="TreeDemo" title="Folder Browser" class="easyui-treegrid" style=" 400px; height: 300px"
            url="/TreeGridShow/ShowTreeGridJson"
            rownumbers="true"
            idfield="id" 
            treefield="name">
            <thead>
                <tr>
                    <th field="name" width="160">Name</th>
                    <th field="remark" width="160" align="right">Remark</th>
                </tr>
            </thead>
        </table>
        <script>
            $("#TreeDemo").treegrid({
            function () { return document.body.clientWidth * 0.9 },//宽度调整 //onBeforeExpand 点击展开结点后出发的事件,返回true继续执行,返回false事件关闭 onBeforeExpand: function (row) { //已经展开过,无需重新加载(若去掉,前端则会不停刷新展开节点) var childrens = $("#TreeDemo").treegrid("getChildren", row["id"]); if (childrens != null && childrens.length > 0) { return false; }           //此处添加ajax异步,可调用后端 $('#TreeDemo').treegrid('collapse', row["id"]).treegrid('append', { parent: row["id"], data: jsonstr }).treegrid('expand', row["id"]); return true; } }); var jsonstr = [ { "id": 10, "name": "浅白", remark: "三级", "_parentId": 3 }, { "id": 20, "name": "粉白", remark: "三级", "_parentId": 3 } ]; </script> </body> </html>

      2.2 后端代码见1.2

      2.3 效果图

    3. 格式说明

      3.1 基础数据格式:

    {
        "total": 6,//总行数
        "rows": [
            {
                "id": "1",
                "name": "所有",
                "remark": "备注",
                "_parentId": "0",//注意此名称唯一
                "state": "open"
            },
            {
                "id": "1",
                "name": "所有",
                "remark": "备注",
                "_parentId": "1",
                "state": "open"
            }
        ]
    }
    

      3.2 异步节点加载格式

    [
        {
            "id": 10,
            "name": "浅白",
            remark: "三级",
            "_parentId": 3
        },
        {
            "id": 20,
            "name": "粉白",
            remark: "三级",
            "_parentId": 3
        }
    ]
    

    3. 结语

    此演示示例没有做分页演示,可用于数据量小的数据展示;懒加载可用于多层级展示。

    附源码地址:http://download.csdn.net/download/manbuba/10106241

  • 相关阅读:
    LeetCode:删除链表中的节点【203】
    精益创业和画布实战(1):变革家,让天下没有难懂的生意
    怎么投资理财,如果有且仅有100万本金?
    怎么投资理财,如果有且仅有100万本金?
    Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较
    View绘制详解,从LayoutInflater谈起
    Java线程和多线程(七)——ThreadLocal
    跳槽谋发展:人生发展的一些思考和最近找工作的坎坷经历
    跳槽谋发展:人生发展的一些思考和最近找工作的坎坷经历
    三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别
  • 原文地址:https://www.cnblogs.com/hjxh/p/7794357.html
Copyright © 2011-2022 走看看