Jquery easyUI datagrid载入复杂JSON数据方法
1、JSON数据为:
{
"total":28, "rows": [
{
"itemNo": "1",
"itemName": "12",
"spec": "",
"pattern": "",
"itemCategory": {
"id": "A01",
"name": "中药"
},
"itemUnit": {
"id": "B01",
"name": "公斤"
},
"uploadFileName": null
},
],
}
2、其相应的java类为:
public class PageModel<T> {
//结果集
private List<T>
rows;
private int total;
//getter and setter methods
}
注意:因为EasyUI中的datagrid组件处理该数据时,默认都是使用rows属性和total属性的,所以为了json数据符合要求,java类中的list属性名比方为rows,list个数的属性名必须为total。
for(var i=0;i<rows.length;i++){
...
}
3、List中的class例如以下:
public class Item {
private String itemNo;
private String itemName;
private String spec;
private String pattern;
private ItemCategory itemCategory;
private ItemUnit itemUnit;
private String uploadFileName;
//getter and setter methods
}
public class ItemCategory {
private String id;
private String name;
//getter and setter methods
}
public class ItemUnit {
private String id;
private String name;
//getter and setter methods
}
4、SpringMVC中处理showJSON的Controller:
@ResponseBody
protected Object showJson(HttpServletRequest request, HttpServletResponse response)
throws Exception {
PageModel pageModel = get_page_model_from_database();
return pageModel;
}
直接返回PageModel 对象,@ResponseBody注解会自己主动调用JSON库将其转换成JSON格式的数据,即本文开头的数据;
5、datagrid中载入数据
//载入数据
$('#Ajax').datagrid({
fit:true,
fitColumns:true,
width: 'auto',
height:300,
striped: true,
singleSelect : true,
url:'item.do',
//POST parameters: command=showJson
queryParams:{
command: 'showJson'
},
loadMsg:'数据载入中请稍后……',
pagination: true,
rownumbers: true,
columns:[[
{field:'itemNo',title: '物料代码',align: 'center',width: 100,
formatter:function(value,row,index){
//alert("itemNo: "+value+" "+row.itemNo+" "+index);
return "<a href='item.do?
command=showDetail&itemNo="+value+"'>"+value+"</a>";
}
},
{field:'itemName',title: '物料名称',align: 'center',width: 100},
{field:'spec',title: '
物料规格',align: 'center',width: 100},
{field:'pattern',title: '物料型号',align: 'center',width: 100},
{field:'itemCategory',title: '类别',align: 'center',width: 100,
formatter:function(value,row,index){
var ret="";
if(value != null) {
ret = value.name;
//alert("itemCategory.id="+value.id+" name="+value.name);
}
return ret;
}
},
{field:'itemUnit',title: '计量单位',align: 'center',width: 100,
formatter:function(value,row,index){
var ret="";
if(value != null) {
ret = value.name;
//alert("itemCategory.id="+value.id+" name="+value.name);
}
return ret;
}
},
]]
});
处理简单数据,比方 "itemNo": "1"时直接使用{field:'itemNo',title: '物料代码',align: 'center',width: 100}就可以载入数据。
但处理复杂数据,比方
"itemCategory": {
"id": "A01",
"name": "中药"
},
则须要使用formatter属性来载入。代码例如以下:
{field:'itemCategory',title: '类别',align: 'center',width: 100,
formatter:function(value,row,index){
var ret="";
if(value != null) {
ret = value.name;
//alert("itemCategory.id="+value.id+" name="+value.name);
}
return ret;
}
},
关于datagrid formatter属性的描写叙述參考:http://www.jeasyui.com/documentation/index.php#
The cell formatter function, take three parameters:
value: the field value.表示当前field相应的值。能够是一个简单对象。如一个字符串,也能够是一个复杂对象。相应一个java类
row: the row record data.表示当前行相应的整个对象,相当于json数据中的rows[i]对象(i为当前行的index),能够使用row.itemNo訪问JSON数据中的rows[i].itemNo对象。使用row.itemCategory.id訪问JSON数据中的rows[i].itemCategory.id对象。
index: the row index.行号。第一行的行号为0
Code example:
$('#dg').datagrid({
columns:[[
{field:'userId',title:'User', width:80,
formatter: function(value,row,index){
if (row.user){
return row.user.name;
} else {
return value;
}
}
}
]]
});
Jquery easyUI datagrid载入复杂JSON数据方法的更多相关文章
- jQuery EasyUI datagrid实现本地分页的方法
http://www.codeweblog.com/jquery-easyui-datagrid%e5%ae%9e%e7%8e%b0%e6%9c%ac%e5%9c%b0%e5%88%86%e9%a1% ...
- jquery easyui datagrid 远程加载数据----javascript法
jquery easyui有三种办法生成datagrid(数据网格),本篇专门讨论javascript借助jquey easy ui实现的方式 html部分 <main role="m ...
- jquery easyui datagrid 远程加载数据----把主键渲染为值遇到的问题及解决方案
起因:数据库中一些字段存的是代表具体值的数字,需要渲染为具体值 monggodb中的字典 mysql中存放的值为:expertin代表教练擅长的搏击技能 jquery easyui中的相关代码如下:用 ...
- Easyui datagrid 绑定本地Json数据
var jsonstr = '{"total":1,"rows":[{"id":"M000005","name ...
- (转)扩展jquery easyui datagrid 之动态绑定列和数据
本文转载自:http://blog.csdn.net/littlewolf766/article/details/7336550 easyui datagrid 不支持动态加载列,上次使用的方法是自己 ...
- jQuery EasyUI DataGrid Checkbox 数据设定与取值
纯粹做个记录,以免日后忘记该怎么设定. 这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数 ...
- 用easyui从servlet传递json数据到前端页面的两种方法
用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...
- jquery easyui datagrid 获取Checked选择行(勾选行)数据
原文:jquery easyui datagrid 获取Checked选择行(勾选行)数据 getSelected:取得第一个选中行数据,如果没有选中行,则返回 null,否则返回记录. getSel ...
- 扩充 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
客户需求: jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) 如图所示,Datagrid 鼠标悬停/离开数据行时 ...
随机推荐
- 数据库连接池中是将connection放进threadlocal里的
我有几点不太明白的,望各位大侠指教下.1.j2ee的应用中,有一个用户请求就会启动一个线程.而如果我们把connection放在Threadlocal里的话,那么我们的程序只需要一个connectio ...
- css方法实现div固定浏览器底端
CSS: ;;background-image:url(text.txt);/*for IE6 防抖,也可以用一张图片URL*/ background-attachment:fixed;} /*是否存 ...
- Java:准备学习的高级主题
ClassLoader GC Concurrent Transaction JTA JPA JDBC JNDI JNI JNA JNative OSGI JMS JSTL EL Servlet NIO ...
- python笔记16-执行cmd指令(os.system和os.popen)
os.system 1.如果想在cmd执行python脚本,可以直接用如下指令 python [xx.py绝对路径] 比如我写了个hello.py的脚本,在脚本里面写入内容:print("h ...
- frp, https, http, nginx 多服务, ssl等配置
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; # Add index.ph ...
- 返回content-length=0问题解决
遇到一个奇怪问题,有时候会不显示css或图片文件,通过调试工具发现请求返回长度都是0.研究半天未果,初步猜测可能是过滤器给拦截了. 果然在一个过滤器中发现相关代码: HttpRequestWrappe ...
- Python学习(六)模块 —— 第三方库
Python 第三方库 安装第三方库 在Python中,安装第三方库包,是通过setuptools这个工具完成的.Python有两个封装了setuptools的包管理工具:easy_install和p ...
- Android实战简易教程-第二十八枪(基于Bmob实现头像图片设置和网络上传功能!)
上一篇我们介绍了怎样由uri转换成String ,本文就用到了上篇文章的方法.以下我们介绍一下怎样设置头像后将头像图片上传到云端的方法,本文基于Bmob提供的服务. 看一下代码:(布局文件和前两篇文章 ...
- (C++)已知String类的定义,实现其函数体
CString类的定义如下: class CMyString{ public: CMyString(const char* pData=NULL); CMyString(const CMyString ...
- notepad++列模式
考虑下面的情况: 已有 AAA BBB CCC 和 aaa bbb ccc 想合并为 AAA aaa BBB bbb CCC ccc 在大写后面,列模式,复制小写,粘贴,结果不是如下: AAA aaa ...