EasyUI datagrid简单运用

jquery的前端框架挺多的,有easyUI ,bootstrap...,对于做系统软件或许easyUI比较好,因为里面控件很丰富,而bootstrap非常简洁大方,但是控件相
对比较少,特别是复杂的网格控件,几乎要自己来写!

介绍一下的easyUI 的datagrid,感觉写法还是比较简单易懂,重用性比较强!
主要实现了显示数据,查询数据(序列化传参),datagrid分页样式选用。

页面如下:

例子依赖:
1、asp.net mvc
2、easyui文件依赖包
    下载地址:http://www.jeasyui.com/download/index.php
3、jquery.serialize-object.js
    下载地址:https://github.com/macek/jquery-serialize-object

后端代码:
1、依赖的类:
    1)Pager 兼容EasyUi 分页(用于查询条件实体继承)

 1     /// <summary>
 2     /// 兼容EasyUi 分页(用于查询条件实体继承)
 3     /// </summary>
 4     public class Pager
 5     {
 6         /// <summary>
 7         /// 兼容EasyUi 分页参数,当前页
 8         /// </summary>
 9         public Int32 Page { get; set; }
10
11         /// <summary>
12         /// 兼容EasyUi 分页参数,每页记录数
13         /// </summary>
14         public Int32 Rows { get; set; }
15     }

2)PersonConditions 查询条件实体类,继承Pager

 1     /// <summary>
 2     /// 查询条件实体类
 3     /// </summary>
 4     public class PersonConditions:Pager
 5     {
 6         public String Code { get; set; }
 7         public String Name { get; set; }
 8         public String Sex { get; set; }
 9         public String Addr { get; set; }
10         public String Phone { get; set; }
11         public Double? Price { get; set; }
12     }

3)Person Person实体

 1     /// <summary>
 2     /// Person实体
 3     /// </summary>
 4     public class Person
 5     {
 6         public String Code { get; set; }
 7         public String Name { get; set; }
 8         public String Sex { get; set; }
 9         public String Addr { get; set; }
10         public String Phone { get; set; }
11         public Double? Price { get; set; }
12     }

4)DataGridObj 兼容EasyUi DataGrid分页数据结构

 1     /// <summary>
 2     /// 兼容EasyUi DataGrid分页数据结构
 3     /// </summary>
 4     public class DataGridObj
 5     {
 6         /// <summary>
 7         /// 总数量
 8         /// </summary>
 9         public Int32 total { get; set; }
10
11         /// <summary>
12         /// 数据
13         /// </summary>
14         public Object rows { get; set; }
15     }

2、Home控制器
    1)Index() 加载页面的方法
    2)GetJson() DataGrid 获取数据的方法

 1     public class HomeController : Controller
 2     {
 3         public ActionResult Index()
 4         {
 5             return View();
 6         }
 7
 8
 9         [HttpPost]
10         public JsonResult GetJson(PersonConditions personWhere)
11         {
12             DataGridObj dgObj = new DataGridObj();
13
14             #region 产生List<Person>数据
15             List<Person> list = new List<Person>();
16             for (int i = 0; i < 15; i++)
17             {
18                 Person person = new Person()
19                 {
20                     Code = "code" + i.ToString(),
21                     Name = "name" + i.ToString(),
22                     Sex=i%2==0?"男":"女",
23                     Addr="Addr"+i.ToString(),
24                     Phone="123456"+i.ToString(),
25                     Price = i
26                 };
27
28                 list.Add(person);
29             }
30             #endregion
31
32             IQueryable<Person> iqPerson = list.AsQueryable();
33             #region 查询条件
34             if (String.IsNullOrEmpty(personWhere.Code) == false)
35                 iqPerson = iqPerson.Where(a => a.Code == personWhere.Code);
36             if (String.IsNullOrEmpty(personWhere.Name) == false)
37                 iqPerson = iqPerson.Where(a => a.Name == personWhere.Name);
38             if (personWhere.Price != null)
39                 iqPerson = iqPerson.Where(a => a.Price == personWhere.Price);
40             #endregion
41
42             list = iqPerson.ToList();
43             dgObj.rows = list.Skip((personWhere.Page - 1) * personWhere.Rows).Take(personWhere.Rows);
44             dgObj.total = list.Count();
45             return Json(dgObj, JsonRequestBehavior.AllowGet);
46         }
47     }

前端代码:
1、脚本
    1)Common:通用类
         SerializeObject:序列化form为对象
    2)EasyUIHelper: EasyUI的帮助类
         InitTextBox:设置textbox共同的初始属性,统一风格
         InitDgPagination:设置datagrid的分页样式(放在datagrid初始化后),dgId为datagrid的id
    3)myDgObj:进行对本页面datagrid的初始化,各种方法定义、调用
    4)$(function () { });别忘了在里面调用初始化控件方法
2、HTML
    1)form 查询条件
    2)id为dg的div为用于绑定datagrid

3、页面代码

  1 @{
  2     Layout = null;
  3 }
  4 <link rel="stylesheet" type="text/css" href="~/easyui/themes/default/easyui.css">
  5 <link rel="stylesheet" type="text/css" href="~/easyui/themes/icon.css">
  6
  7 <script type="text/javascript" src="~/easyui/jquery.min.js"></script>
  8 <script type="text/javascript" src="~/easyui/jquery.easyui.min.js"></script>
  9 <script type="text/javascript" src="~/Scripts/jquery.serialize-object.min.js"></script>
 10 <style>
 11     body {font-family: "Microsoft YaHei",sans-serif;}
 12     .from_box {padding: 10px 10px 0px 0px;overflow: hidden;}
 13     .from_box .item {width:280px;float:left; margin:5px;}
 14     .from_box .item label:first-child { width:85px;text-align:right;display:inline-block;}
 15     .from_box .item input{ padding-left:5px;}
 16   /*.from_box .item_row {width:100%;float:left; margin:5px;display:inline-block;}
 17     .from_box .item_row label:first-child { width:85px;text-align:right;display:inline-block;}
 18   */
 19
 20 </style>
 21 <form class="from_box">
 22     <div class="item"><label>编码编码:</label><input name="Code" class="easyui-textbox" data-options="iconCls:‘icon-man‘" /></div>
 23     <div class="item"><label>Name:</label><input name="Name" class="easyui-textbox" /></div>
 24     <div class="item"><label>Sex:</label><input name="Sex" class="easyui-textbox" /></div>
 25     <div class="item"><label>Addr:</label><input name="Addr" class="easyui-textbox" /></div>
 26     <div class="item"><label>Phone:</label><input name="Phone" class="easyui-textbox" /></div>
 27     <div class="item"><label>Price:</label><input name="Price" class="easyui-textbox" /></div>
 28 </form>
 29
 30 <div id="dg"></div>
 31 <script>
 32
 33     /*通用类*/
 34     var Common = {
 35         SerializeObject: function (fromClass) {    /*序列化成对象,fromClass为html元素为form的class,默认为.from_box*/
 36             if (fromClass == null)
 37                 fromClass = ".from_box";
 38             return $(fromClass).serializeObject();
 39         }
 40     }
 41
 42     /*EasyUI的帮助类*/
 43     var EasyUIHelper = {
 44         /****************** textbox的帮助方法 Begin ********************/
 45         InitTextBox: function () {                          /*设置textbox的初始属性,统一风格*/
 46             var tbOptions = $(".item .easyui-textbox").textbox({
 47                 height: 30,
 48                 width: 190
 49             });
 50         },
 51         /****************** textbox的帮助方法 End **********************/
 52
 53         /****************** datagrid的帮助方法 Begin ******************/
 54         InitDgPagination: function (dgId) {                 /*设置datagrid的分页样式(放在datagrid初始化后),dgId为datagrid的id*/
 55             $(dgId).datagrid("getPager").pagination({
 56                 layout: ["list", "sep", "first", "prev", "links", "next", "last", "sep", "refresh"],
 57                 displayMsg: "显示 {from} 到 {to}  共 {total} 项"
 58             });
 59         }
 60         /****************** datagrid的帮助方法 End ********************/
 61     }
 62
 63     var myDgObj = {
 64         Search: function () {
 65             $("#dg").datagrid("load", Common.SerializeObject());
 66         },
 67         Edit: function () {
 68             alert("edit");
 69         },
 70         Load: function () {
 71             $("#dg").datagrid("load", Common.SerializeObject());
 72         },
 73         InitDataGrid: function () {
 74             $("#dg").datagrid({
 75                 url: ‘@Url.Action("GetJson", "Home")‘,
 76                 method: "post",
 77                 pagination: "true",
 78                 rownumbers: "true",
 79                 fitColumns: "true",
 80                 singleSelect: "true",
 81                 frozenColumns: [[
 82                     { field: "Code", title: "Code", width: 100 },
 83                     { field: "Name", title: "Name" }
 84                 ]],
 85                 columns: [[
 86                     { field: "Sex", title: "Sex" },
 87                     { field: "Addr", title: "Addr" },
 88                     { field: "Phone", title: "Phone" },
 89                     { field: "Price", title: "Price", align: "right" }
 90                 ]],
 91                 toolbar: [
 92                     { text: "查询", iconCls: "icon-search", handler: "myDgObj.Search" }, ‘-‘,
 93                     { text: "编辑", iconCls: "icon-edit", handler: "myDgObj.Edit" }
 94                 ]
 95             });
 96
 97             EasyUIHelper.InitDgPagination("#dg"); //datagrid初始化同时,初始页脚(分页)样式
 98         }
 99     }
100
101     $(function () {
102         EasyUIHelper.InitTextBox();  //easyui-textbox统一初始化属性
103         myDgObj.InitDataGrid();      //datagrid初始化
104     });
105 </script>

注意:
     $("#dg").datagrid("load", Common.SerializeObject());
查询时,通过序列化form为对象post到GetJson()作为入参

时间: 2024-08-01 04:16:01

EasyUI datagrid简单运用的相关文章

easyUI datagrid笔记

easyUI datagrid 简单使用与注意细节 背景: 业余爱好,使用了一下easyUI的搜索框与数据表格,并把两者整合起来进行使用. 使用前提(引入需要的js and css): <link rel="stylesheet" type="text/css" href="./css/easyui.css"> <link rel="stylesheet" type="text/css"

easyUI datagrid editor扩展dialog

easyUI datagrid简单使用:着重两点1.editor对象的click事件:2.将dialog窗体内的值填写到当前正编辑的单元格内 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf

[JS][easyui]jQuery EasyUI Datagrid VirtualScrollView视图简单分析

 大家都知道EasyUI的Datagrid组件在加载大数据量时的优势并不是很明显,相对于其他一些框架,如果数据量达到几千,便会比较慢,特别是在IE下面.针对这种情况,我们首要做的是要相办法优化datagrid组件的各方面性能,不过任何事情都是可以变通解决的,virtualScrollView就是一种不错的解决方案. virtualScrollView的准则就是尽量少画tr到table里,表格的高度是有限的,而用户的可见区域是很有限的,所以数据量很大的时候,是没有必要将所有数据数据都画到表格中

EasyUI Datagrid的简单使用

此前同样写过EasyUI Datagrid的demo,好记性不如烂笔头,何况记性也不是那么好,赶紧记录一下.照搬上一篇EasyUI Tree的格式. 实现效果:获取数据库表的数据,在EasyUI Datagrid上展示出来并使用分页控件进行分页. 项目.框架.数据库:创建的是Maven项目,采用Spring+SpringMVC+Mybatis框架,数据库SQL Server 2005 1.创建数据库表 表结构: 表数据: 2.通过mybatis逆向工程映射TreeTestTable(表名略丑)

DataTables VS EasyUI DataGrid 基础应用 转

DataTables中文网推出了 第一篇 关于DataTables和其他表格插件比较后,为了把让这个比较更有意义,更能帮助到大家,DataTables中文网 做了问卷调查,根据小伙伴们的填写我归纳了一下,一个表格插件关注点在以下三个部分基础.高级的和进阶: 基础 排序 分页 搜索 美观 合理的配置 高级 单击和双击行事 选择高亮显示 增删改查 列宽拖动 数据导出 添加序号 进阶 支持的数据类型 行内编辑 合并单元格 自定义表头 高扩展性 易用的API 模块化 所以根据以上列出的这些功能点,Dat

Easyui Datagrid rownumbers行号四位、五位显示不完全的解决办法

Easyui Datagrid rownumbers行号四位.五位显示不完全的解决办法(引) 方法一: 相信很多人在使用easyui的时候都遇到过这个问题,当我们设置成显示Rownumber的时候,你会发现,如果Rownumber越来越大,达到三位数或者四位数的时候,Rownumber就显示不全了.这个问题纠结了不知道多少人,在群里和论坛里面都的都被问到无数次了. 以前也一直没有太认真考虑过要解决这个问题,恰好最近有点时间,就研究了一下,其实要解决也很简单,扩展一个方法就行了. 首先,从data

jQuery Easyui datagrid动态列绑定

前几天有人在使用jQuery EasyUI的datagrid时,遇到不会动态绑定列的情况,而网上给出的例子可能也是比较早的处理办法,竟然需要修改easyui源码,其实解决这问题的思路是很简单,我们只需修改要显示的列即可.那位朋友最后改为这种处理时,发现还是有问题,最终我发现她返回不是合法json,里边多个方括号,这里推荐大家使用本站的JSON在线校验格式化工具来验证返回json是否正确. 这里我们以上篇文章中类似的简单json来说明这个问题,比如后台要根据当前用户的权限返回不同的json: 分享

jQuery EasyUI Datagrid性能优化专题

jQuery EasyUI的Datagrid组件功能算是很强大了,不过性能确实不怎么乐观,而对于性能问题,网络上几乎也找不到相关的优化资料,所谓的牛人们可能 都望而却步了.本博客以后会带着分析Datagrid组件的性能问题,并且给出优化方案,也希望大家能集思广益,给出一些好的想法. 慢在哪些方面 以目前对Datagrid的了解程度去看待性能问题,主要有以下几点: 加载大数据量时比较慢(不考虑服务端返回数据的时间),这点尤其体现在IE浏览器里面: 大数据量时,加载后,操作很不流畅,勾选慢,sing

jQuery EasyUI datagrid列名包含特殊字符会导致表格错位

首先申明:本文所述的Bug存在于1.3.3以及更高版本中,其它低版本,本人未测试,太老的版本不想去折腾了. 洒家在写前端的SQL执行工具时,表格用了 jQuery EasyUI datagrid,因为用户的SQL是千奇百怪的,所以出现了诸如:"BLOCKS*8/1024","trunc(SYSDATE)"之类的列名(field)时,表格就会错位,而且含有特殊字符的列无法手工调整大小. 经分析,datagrid组件在画表格的时候会在宿主DOM后动态追加一个style节