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 分页(用于查询条件实体继承)

     /// <summary>
/// 兼容EasyUi 分页(用于查询条件实体继承)
/// </summary>
public class Pager
{
/// <summary>
/// 兼容EasyUi 分页参数,当前页
/// </summary>
public Int32 Page { get; set; } /// <summary>
/// 兼容EasyUi 分页参数,每页记录数
/// </summary>
public Int32 Rows { get; set; }
}

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

     /// <summary>
/// 查询条件实体类
/// </summary>
public class PersonConditions:Pager
{
public String Code { get; set; }
public String Name { get; set; }
public String Sex { get; set; }
public String Addr { get; set; }
public String Phone { get; set; }
public Double? Price { get; set; }
}

3)Person Person实体

     /// <summary>
/// Person实体
/// </summary>
public class Person
{
public String Code { get; set; }
public String Name { get; set; }
public String Sex { get; set; }
public String Addr { get; set; }
public String Phone { get; set; }
public Double? Price { get; set; }
}

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

     /// <summary>
/// 兼容EasyUi DataGrid分页数据结构
/// </summary>
public class DataGridObj
{
/// <summary>
/// 总数量
/// </summary>
public Int32 total { get; set; } /// <summary>
/// 数据
/// </summary>
public Object rows { get; set; }
}

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

     public class HomeController : Controller
{
public ActionResult Index()
{
return View();
} [HttpPost]
public JsonResult GetJson(PersonConditions personWhere)
{
DataGridObj dgObj = new DataGridObj(); #region 产生List<Person>数据
List<Person> list = new List<Person>();
for (int i = ; i < ; i++)
{
Person person = new Person()
{
Code = "code" + i.ToString(),
Name = "name" + i.ToString(),
Sex=i%==?"男":"女",
Addr="Addr"+i.ToString(),
Phone=""+i.ToString(),
Price = i
}; list.Add(person);
}
#endregion IQueryable<Person> iqPerson = list.AsQueryable();
#region 查询条件
if (String.IsNullOrEmpty(personWhere.Code) == false)
iqPerson = iqPerson.Where(a => a.Code == personWhere.Code);
if (String.IsNullOrEmpty(personWhere.Name) == false)
iqPerson = iqPerson.Where(a => a.Name == personWhere.Name);
if (personWhere.Price != null)
iqPerson = iqPerson.Where(a => a.Price == personWhere.Price);
#endregion list = iqPerson.ToList();
dgObj.rows = list.Skip((personWhere.Page - ) * personWhere.Rows).Take(personWhere.Rows);
dgObj.total = list.Count();
return Json(dgObj, JsonRequestBehavior.AllowGet);
}
}

前端代码:
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、页面代码

 @{
Layout = null;
}
<link rel="stylesheet" type="text/css" href="~/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="~/easyui/themes/icon.css"> <script type="text/javascript" src="~/easyui/jquery.min.js"></script>
<script type="text/javascript" src="~/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.serialize-object.min.js"></script>
<style>
body {font-family: "Microsoft YaHei",sans-serif;}
.from_box {padding: 10px 10px 0px 0px;overflow: hidden;}
.from_box .item {width:280px;float:left; margin:5px;}
.from_box .item label:first-child { width:85px;text-align:right;display:inline-block;}
.from_box .item input{ padding-left:5px;}
/*.from_box .item_row {width:100%;float:left; margin:5px;display:inline-block;}
.from_box .item_row label:first-child { width:85px;text-align:right;display:inline-block;}
*/ </style>
<form class="from_box">
<div class="item"><label>编码编码:</label><input name="Code" class="easyui-textbox" data-options="iconCls:'icon-man'" /></div>
<div class="item"><label>Name:</label><input name="Name" class="easyui-textbox" /></div>
<div class="item"><label>Sex:</label><input name="Sex" class="easyui-textbox" /></div>
<div class="item"><label>Addr:</label><input name="Addr" class="easyui-textbox" /></div>
<div class="item"><label>Phone:</label><input name="Phone" class="easyui-textbox" /></div>
<div class="item"><label>Price:</label><input name="Price" class="easyui-textbox" /></div>
</form> <div id="dg"></div>
<script> /*通用类*/
var Common = {
SerializeObject: function (fromClass) { /*序列化成对象,fromClass为html元素为form的class,默认为.from_box*/
if (fromClass == null)
fromClass = ".from_box";
return $(fromClass).serializeObject();
}
} /*EasyUI的帮助类*/
var EasyUIHelper = {
/****************** textbox的帮助方法 Begin ********************/
InitTextBox: function () { /*设置textbox的初始属性,统一风格*/
var tbOptions = $(".item .easyui-textbox").textbox({
height: 30,
width: 190
});
},
/****************** textbox的帮助方法 End **********************/ /****************** datagrid的帮助方法 Begin ******************/
InitDgPagination: function (dgId) { /*设置datagrid的分页样式(放在datagrid初始化后),dgId为datagrid的id*/
$(dgId).datagrid("getPager").pagination({
layout: ["list", "sep", "first", "prev", "links", "next", "last", "sep", "refresh"],
displayMsg: "显示 {from} 到 {to} 共 {total} 项"
});
}
/****************** datagrid的帮助方法 End ********************/
} var myDgObj = {
Search: function () {
$("#dg").datagrid("load", Common.SerializeObject());
},
Edit: function () {
alert("edit");
},
Load: function () {
$("#dg").datagrid("load", Common.SerializeObject());
},
InitDataGrid: function () {
$("#dg").datagrid({
url: '@Url.Action("GetJson", "Home")',
method: "post",
pagination: "true",
rownumbers: "true",
fitColumns: "true",
singleSelect: "true",
frozenColumns: [[
{ field: "Code", title: "Code", width: 100 },
{ field: "Name", title: "Name" }
]],
columns: [[
{ field: "Sex", title: "Sex" },
{ field: "Addr", title: "Addr" },
{ field: "Phone", title: "Phone" },
{ field: "Price", title: "Price", align: "right" }
]],
toolbar: [
{ text: "查询", iconCls: "icon-search", handler: "myDgObj.Search" }, '-',
{ text: "编辑", iconCls: "icon-edit", handler: "myDgObj.Edit" }
]
}); EasyUIHelper.InitDgPagination("#dg"); //datagrid初始化同时,初始页脚(分页)样式
}
} $(function () {
EasyUIHelper.InitTextBox(); //easyui-textbox统一初始化属性
myDgObj.InitDataGrid(); //datagrid初始化
});
</script>

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

EasyUI datagrid简单运用的更多相关文章

  1. easyUI datagrid editor扩展dialog

    easyUI datagrid简单使用:着重两点1.editor对象的click事件:2.将dialog窗体内的值填写到当前正编辑的单元格内 <!DOCTYPE html> <htm ...

  2. easyUI datagrid笔记

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

  3. EasyUI Datagrid的简单使用

    此前同样写过EasyUI Datagrid的demo,好记性不如烂笔头,何况记性也不是那么好,赶紧记录一下.照搬上一篇EasyUI Tree的格式. 实现效果:获取数据库表的数据,在EasyUI Da ...

  4. easyui datagrid中 多表头方法总结

    easyui datagrid中怎么设置表头成多行显示呢?其实很简单,就是给datagrid的columns属性设置成多个数组就行了.下面直接看例子吧,这是一个两行表头的,按照此方法,还可以设置三行表 ...

  5. EasyUI DataGrid分页数据绑定

    记录东西感觉很痛苦,总结东西很痛苦,麻烦,不过为了下次的方便和知识的牢固以后要坚持总结. EasyUI DataGrid分页数据绑定 在解决方案中新建两个文件FormMain.aspx(html也可以 ...

  6. [转载]再次谈谈easyui datagrid 的数据加载

    这篇文章只谈jQuery easyui datagrid 的数据加载,因为这也是大家谈论最多的内容.其实easyui datagrid加载数据只有两种方式:一种是ajax加载目标url返回的json数 ...

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

    Easyui Datagrid rownumbers行号四位.五位显示不完全的解决办法(引) 方法一: 相信很多人在使用easyui的时候都遇到过这个问题,当我们设置成显示Rownumber的时候,你 ...

  8. 反射实体自动生成EasyUi DataGrid模板 第二版--附项目源码

    之前写过一篇文章,地址 http://www.cnblogs.com/Bond/p/3469798.html   大概说了下怎么通过反射来自动生成对应EasyUi datagrid的模板,然后贴了很多 ...

  9. 解决easyui datagrid加载数据时,checkbox列没有根据checkbox的值来确定是否选中

    背景:   昨天帮朋友做一个easyui datagrid的小实例时,才发现easyui datagrid的checkbox列,没有根据值为true或false来选中checkbox,当时感觉太让人失 ...

随机推荐

  1. MCS-51特殊功能寄存器(SPR)的C51定义

    MCS - 51单片机中,除了程序计数器PC和4组工作寄存器组外,其它所有的寄存器均为特殊功能寄存器(SFR),分散在片内RAM区的高128字节中,地址范围为80H~0FFH.SFR中有11个寄存器具 ...

  2. Android 的开源电话/通讯/IM聊天项目全集

    一.Android的XMPP客户端 Beem Beem 是一个运行于 Android 手机平台的 XMPP (jabber) 的客户端软件,兼容标准的 XMPP 服务器和服务,例如 Ejabberd, ...

  3. FZU2176---easy problem (树链剖分)

    http://acm.fzu.edu.cn/problem.php?pid=2176 Problem 2176 easy problem Accept: 9    Submit: 32Time Lim ...

  4. HDU2196-Computer

    原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=2196 思路: 好了,无敌了,经过昨晚4个钟头+今上午1个小时的奋战,这题终于被我AC了 收获的确是不 ...

  5. chinaOS

    从舆论上和政策规定上来推广操作系统,这对国产操作系统而言是好事,还是坏事? 从某种程度上来说,这是好事 运用行政的力量,率先在国家机关中普及国产操作系统确实是件好事,首先是确保了国家信息安全,其次则能 ...

  6. 创建git repo

    http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository Getting a Git Repository You can get ...

  7. mybatis错误Invalid bound statement (not found) 的解决办法

    <!-- IDEA需要添加一下内容,否则无法找到mapper --> <build> <resources> <resource> <direct ...

  8. 二、MLlib统计指标之关联/抽样/汇总

    汇总统计[Summary statistics]: Summary statistics提供了基于列的统计信息,包括6个统计量:均值.方差.非零统计量个数.总数.最小值.最大值. import org ...

  9. UDP C/S编程

    UDP C/S编程的步骤如下图所示与TCP C/S通信的区别在于:服务端没有设置监听和等待连接的过程.客户端没有连接服务端的过程.基于UDP的通信时不可靠地,面向无连接的,发送的数据无法确切知道对方收 ...

  10. Java中的Switch用法

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),   在java1. ...