JQueryEasyUI datagrid框架的基本使用


Posted in Javascript onApril 08, 2013

今天说说这个datagrid框架的基本使用,这个框架一直以来都是大家比较头疼的框架,尤其是Json数据的拼接,后台前台都很重要,使用这个框架,最重要的是仔细:
无需废话,上代码了:

<link href="jquery-easyui-1.3.2/themes/default/easyui.css" rel="stylesheet" type="text/css" />
<!--easyui最全的样式包也可单独引用你想使用的样式包-->
<link href="jquery-easyui-1.3.2/themes/icon.css" rel="stylesheet" type="text/css" />
<!--easyui自带图片样式包,也可自行添加-->
<script src="jquery-easyui-1.3.2/jquery-1.8.0.min.js" type="text/javascript"></script>
<!--我使用的是easyui 1.3.2,基于jquery-1.8.0-->
<script src="jquery-easyui-1.3.2/jquery.easyui.min.js" type="text/javascript"></script>
<!--easyui的js包-->
<script src="jquery-easyui-1.3.2/locale/easyui-lang-zh_CN.js" type="text/javascript"></script>
<!--easyui的中文语言包,默认是英文-->
</head>
<body id="layoutbody" class="easyui-layout">
<div data-options="region:'north',title:'North Title',split:true" style="height: 100px;">
</div>
<div data-options="region:'south',title:'South Title',split:true" style="height: 100px;">
</div>
<div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width: 100px;">
</div>
<div data-options="region:'west',title:'West',split:true" style="width: 100px;">
</div>
<div data-options="region:'center',title:'center title'" href="HTMLPage.htm" style="padding: 5px;
background: #eee; overflow: hidden;"><!--这里指向了一个htm页-->
</div>
</body>
</html>

HTMLPage.htm代码:
<script type="text/javascript" charst="utf-8">
//因为layout框架指向href时,只取html页面body中间的部分,所以该页面这样写即可
//有datagrid包含属性较多,所以尽量使用js的方式初始化datagrid框架
$(function () {
$("#dg").datagrid({
url: "GetJson.ashx", //指向一个一般处理程序或者一个控制器,返回数据要求是Json格式,直接赋值Json格式数据也可,我以demo中自带的Json数据为例,就不写后台代码了,但是我会说下后台返回的注意事项
title: "数据展示表格",
iconCls: "icon-add",
fitColumns: false, //设置为true将自动使列适应表格宽度以防止出现水平滚动,false则自动匹配大小
//toolbar设置表格顶部的工具栏,以数组形式设置
idField: 'id', //标识列,一般设为id,可能会区分大小写,大家注意一下
loadMsg: "正在努力为您加载数据", //加载数据时向用户展示的语句
pagination: true, //显示最下端的分页工具栏
rownumbers: true, //显示行数 1,2,3,4...
pageSize: 10, //读取分页条数,即向后台读取数据时传过去的值
pageList: [10, 20, 30], //可以调整每页显示的数据,即调整pageSize每次向后台请求数据时的数据
//由于datagrid的属性过多,我就不每个都介绍了,如有需要,可以看它的API
sortName: "name", //初始化表格时依据的排序 字段 必须和数据库中的字段名称相同
sortOrder: "asc", //正序
columns: [[
{ field: 'code', title: 'Code', width: 100 },
{ field: 'name', title: 'Name', width: 100 ,sortable:true},//sortable:true点击该列的时候可以改变升降序
{ field: 'addr', title: 'addr', width: 100,
//这里可以添加这样一个方法,使其显示数据得到改变
// formatter: function (value, row, index) {
// if (value == "0") {
// return "普通角色";
// } else {
// return "特殊角色";
// }
// }
}
]]//这里之所以有两个方括号,是因为可以做成水晶报表形式,具体可看demo
});
});
</script>
<div id="tt" class="easyui-tabs" style="width: 500px; height: 250px;" fit="true"
border="false">
<div title="Tab1" style="padding: 20px;" border="false">
<table id="dg">
</table>
</div>
</div>

JQueryEasyUI datagrid框架的基本使用

这是前台请求数据时发送的数据;

Json格式数据一定要是双引号的,单引号无法显示数据哦;

数据格式如下:

{ 
"total":239, 
"rows":[ 
{"code":"001","name":"Name 1","addr":"Address 11","col4":"col4 data"}, 
{"code":"002","name":"Name 2","addr":"Address 13","col4":"col4 data"}, 
{"code":"003","name":"Name 3","addr":"Address 87","col4":"col4 data"}, 
{"code":"004","name":"Name 4","addr":"Address 63","col4":"col4 data"}, 
{"code":"005","name":"Name 5","addr":"Address 45","col4":"col4 data"}, 
{"code":"006","name":"Name 6","addr":"Address 16","col4":"col4 data"}, 
{"code":"007","name":"Name 7","addr":"Address 27","col4":"col4 data"}, 
{"code":"008","name":"Name 8","addr":"Address 81","col4":"col4 data"}, 
{"code":"009","name":"Name 9","addr":"Address 69","col4":"col4 data"}, 
{"code":"010","name":"Name 10","addr":"Address 78","col4":"col4 data"} 
] 
}

这里呢,后台传递数据很重要:

注意:表格Post或者get回来的请求中
page:3 代表page为key,然后选择的当前页码为3
rows:10 代表一页的大小为10
后台返回的数据的格式为:{total:'',rows:[{},{}]}
只要包含了总数tatol字段,rows是具体的行数
例如:
Asp.Net MVC 例子:
public JsonResult GetAllUserInfos()
{
int pageSize = 5;
int pageIndex = 1;
int.TryParse(this.Request["page"], out pageIndex);
int.TryParse(this.Request["rows"], out pageSize);

pageSize = pageSize <= 0 ? 5 : pageSize;
pageIndex = pageIndex < 1 ? 1 : pageIndex;

var temp = db.UserInfo
.OrderBy(u=>u.Sort)
.Skip<UserInfo>((pageIndex-1)*pageSize)
.Take<UserInfo>(pageSize)
.ToList<UserInfo>();
Hashtable ht = new Hashtable();
ht["total"] = db.UserInfo.Count();
ht["rows"] = temp;
return Json(ht);
}

Asp.Net WebForm 例子:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
var strWebName = context.Request["WebName"] ?? string.Empty;
var GoodsNo = context.Request["GoodsNo"] ?? string.Empty;
int categoryId = 0;

int pageIndex = 1;
int pageSize = 10;

int.TryParse(context.Request["rows"], out pageSize);
int.TryParse(context.Request["page"], out pageIndex);

decimal priceLeft = 0;
decimal priceRight = 1000000;
int goodsStatus = 0;
decimal.TryParse(context.Request["PriceLeft"], out priceLeft);
decimal.TryParse(context.Request["PriceRight"], out priceRight);
int.TryParse(context.Request["CategoryId"], out categoryId);
int.TryParse(context.Request["GoodsStatus"], out goodsStatus);
var goodsQueryParamter = new GoodsQueryParamter();

goodsQueryParamter.GoodsStatus = (Model.GoodsModel.GoodsStatusEnum)goodsStatus;

var ds = goodsService.GetGoodsList(goodsQueryParamter);
string json = string.Empty;

if (ds != null && ds.Tables.Count > 0)
{
System.Text.StringBuilder rowJson = new System.Text.StringBuilder();
int colLen = ds.Tables[0].Columns.Count;
DataColumnCollection col = ds.Tables[0].Columns;
foreach (DataRow row in ds.Tables[0].Rows)
{
System.Text.StringBuilder colJson = new System.Text.StringBuilder();
rowJson.Append("{");
for (int i = 0; i < colLen; i++)
{
colJson.Append("\"" + col[i].ColumnName + "\":\"" + row[i].ToString() + "\",");
}
rowJson.Append(colJson.ToString().TrimEnd(','));
rowJson.Append("},");
}
json = "{\"total\":" + ds.Tables[0].Rows[0]["sumGoods"] + ",\"rows\":[" + rowJson.ToString().TrimEnd(',') + "]}";
}
context.Response.Write(json);
}

ASP.Net中有一个类也可以序列化Json格式数据;

Javascript 相关文章推荐
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
Mar 22 Javascript
JQuery实现自定义对话框的代码
Jun 15 Javascript
js去字符串前后空格5种实现方法及比较
Apr 03 Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
微信小程序访问node.js接口服务器搭建教程
Apr 25 Javascript
angular2中使用第三方js库的实例
Feb 26 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
VUE中V-IF条件判断改变元素的样式操作
Aug 09 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
vue实现轮播图帧率播放
Jan 26 Vue.js
Jquery中使用setInterval和setTimeout的方法
Apr 08 #Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 #Javascript
基于datagrid框架的查询
Apr 08 #Javascript
datagrid框架的删除添加与修改
Apr 08 #Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 #Javascript
jQuery setTimeout()函数使用方法
Apr 07 #Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
Apr 07 #Javascript
You might like
php程序之die调试法 快速解决错误
2009/09/17 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
node后端服务保活的实现
2019/11/10 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python正则捕获操作示例
2017/08/19 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
最热门的自我评价
2013/12/30 职场文书
元宵节主持词
2014/03/25 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
素质教育标语
2014/06/27 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
宣传委员竞选稿
2015/11/19 职场文书