jquery的easyUI里的datagrid是erp系统中常用到的表格展示工具,在java项目中,我使用struts与jquery的前台页面程序进行数据交互,由于easyUI中有一些固定名称的变量,于是我便想做一个数据模型方便进行使用。主要是在继承的Action中加入一些固定的变量,Action程序如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionSupport;
import net.sf.json.JSONObject;
/**
* 封装了与easyUI datagrid对接的数据模型<br/>
* 1:返回数据中不允许有null的value,所以对null进行了转化(转化为空字符)<br/>
* 2:对数据中以time结尾的字段的时间格式进行了转化(默认将unix时间转为yyyy-MM-dd HH:mm:ss)
*/
public class BaseViewAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private JSONObject resultObj;
public int page;
public int rows;
public String sort;
public String order;
private int total;
private String time_pattern = "yyyy-MM-dd HH:mm:ss";
private List<Map<String, Object>> dataList;
public JSONObject getResultObj() {
for(Map<String, Object> data : dataList) {
for(Map.Entry<String, Object> entry : data.entrySet()) {
String key = entry.getKey();
// datagrid中不允许出现值为null的字段,在这里进行转化
if(entry.getValue() == null) {
data.put(key, "");
}
if(key.endsWith("time")) {
data.put(key, getTimeVal(entry.getValue().toString()));
}
}
}
Map<String, Object> parameter = new HashMap<String, Object>();
parameter.put("total", total);
parameter.put("rows", dataList);
resultObj =JSONObject.fromObject(parameter);
return resultObj;
}
private static Pattern pattern = Pattern.compile("^[1-9][0-9]{9}$");
SimpleDateFormat sdf = new SimpleDateFormat(time_pattern);
/**
* 由于数据库中的时间格式是unix时间,所以转化为用户可视的时间格式
* @param unix时间字符串
*/
private String getTimeVal(String value) {
if("0".equals(value))
return "";
if(!pattern.matcher(value).find())
return value;
long time = Long.valueOf(value);
return sdf.format(new Date(time*1000L));
}
public void setResultObj(JSONObject resultObj) {
this.resultObj = resultObj;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
public void setDataList(List<Map<String, Object>> dataList) {
this.dataList = dataList;
}
public void setTotal(int total) {
this.total = total;
}
public String getTime_pattern() {
return time_pattern;
}
/**
* 这里允许改变时间字段返回的格式
* @param time_pattern 默认yyyy-MM-dd HH:mm:ss
*/
public void setTime_pattern(String time_pattern) {
this.time_pattern = time_pattern;
}
}
在实际应用中,我们需要在Action中继承此Action,实用(实际应用)代码如下:
1.Action代码
public class ManagerViewAction extends BaseViewAction{
private static final long serialVersionUID = 1L;
private Map<String, Object> filters = new HashMap<String, Object>();
public void setName(String name) {
this.filters.put("name", name);
}
public void setType(String type) {
this.filters.put("type", type);
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
public String dataList() throws Exception {
BaseManagerServiceI service = (BaseManagerServiceI)SpringManager.getBean(BaseManagerServiceI.class.getName());
List<Map<String, Object>> dataList = service.queryDataList(page, rows, sort, order, filters);
int totalNum = service.queryDataCount(filters);
/** 主要是下面的2行代码,这里需要设置返回的数据以及总行数 */
this.setDataList(dataList);
this.setTotal(totalNum);
return SUCCESS;
}
}
2.struts.xml配置:
<package name="json" extends="json-default">
<action name="ManagerViewAction" class="app.order.action.ManagerViewAction">
<result type="json">
<param name="root">resultObj</param>
</result>
</action>
</package>
3.前台:
$(function(){
$("input[type=button]").button();
var xx = top.document.getElementById('result');
curGridObj = $('#dataList').datagrid({
title:'基础管理',
width:$("#content").width()-2,
height:$(xx).height()-60,
nowrap: false,
striped: true,
url:'/ManagerViewAction!dataList.do',
sortName: 'add_time',
sortOrder: 'desc',
idField:'id',
pagination:true,
pageSize:15,
pageNumber:1,
pageList:[15,20,30],
loadMsg:'正在加载数据......',
columns:[[
{title:'id',field:'id',hidden:true},
{title:'列1',field:'column1',width:60,align:'center'},
{title:'列2',field:'column2',width:150,align:'center',sortable:true},
{title:'列3',field:'column3',width:150,align:'center',sortable:true},
]],
rownumbers:true,
toolbar:[]
});
var p = $('#dataList').datagrid('getPager');
p.pagination({
pageSize:15,
pageList:[15,20,30],
beforePageText: '第',
afterPageText: '页 共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录'
});
});
<body style="font-size:9pt;margin:0;overflow:hidden;">
<table id="content" width="100%" cellspacing="0" cellpadding="3">
<tr>
<td colspan="6">
<table id="dataList" style="width:100%;"></table>
</td>
</tr>
</table>
</body>
以上代码是根据项目中的更改后的,如不能直接运行,请调试,另外别忘了加入
struts-json的lib包
分享到:
相关推荐
JS EasyUI DataGrid是一款基于jQuery和EasyUI框架的数据表格组件,它提供了丰富的功能,如数据分页、排序、过滤和自定义操作等。在实际应用中,动态加载数据是DataGrid的一个重要特性,允许用户在需要时加载更多的...
在IT行业中,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。在实际工作中,我们经常需要将这些展示的数据导出到Excel文件,以便进行进一步的分析或存储。下面...
在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如数据分页、排序、筛选等。当我们需要将Datagrid中的数据进行打印时,可能会遇到一些挑战,因为通常默认的浏览器打印功能...
jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!
在这个"EasyUI DataGrid 过滤用法实例"中,我们将深入探讨如何利用 EasyUI 的 DataGrid 组件实现数据过滤功能,帮助用户更高效地查找和管理表格中的信息。 首先,`datagrid-filter.js` 文件很可能包含了实现过滤...
### 解决EasyUI dataGrid列较多时无数据显示不全的问题 在使用EasyUI框架进行前端开发的过程中,可能会遇到dataGrid组件在数据为空时列显示不完整的问题。这不仅影响用户体验,也降低了系统的可用性。本文将详细...
easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格
EasyUI是一个基于jQuery的UI库,提供了丰富的组件,包括datagrid,它是一个用于展示表格数据的组件。在某些场景下,用户可能希望在滚动表格时,某些重要的列(通常是标题或标识列)始终保持可见,这就是“右冻结”的...
在使用EasyUI框架开发Web应用时,Datagrid组件是一个非常重要的元素,它提供了一种方便的方式来展示和操作数据。在标题“easyui datagrid在编辑状态下更新列的值”中,我们关注的是如何在Datagrid的编辑模式下动态地...
EasyUI的Datagrid是一个强大的表格组件,它可以显示大量数据并支持排序、分页、过滤和编辑等功能。在Web应用中,Datagrid常用于展示结构化的数据,使用户能够高效地浏览和操作信息。 2. **鼠标悬停事件**: 在...
easyui datagrid editor回车切换单元格示例,适合熟悉easyui但又不懂如何做的人员,可能参考一下源码JS。
easyUI datagrid 自动调整行号大小
在本项目中,"easyui datagrid 分页查询样例"是利用EasyUI Datagrid与后端SpringMVC框架集成,实现数据的后台分页查询功能。下面将详细阐述这一知识点。 首先,EasyUI Datagrid的核心在于其强大的数据绑定能力,它...
通过阅读这份文档,我们可以了解 Datagrid 的基本配置和高级特性,以及如何与后端数据源进行交互。 `jquery-easyui-document.chm` 是 jQuery EasyUI 的官方帮助文档,通常包含了完整的 API 参考、示例代码和使用...
默认情况下,EasyUI Datagrid 支持基本的数据排序功能,但其默认排序逻辑是基于字符编码的,因此无法直接实现中文按拼音顺序的排序。 #### 三、前端解决方案 对于前端来说,可以通过自定义排序函数的方式来实现中文...
首先,`datagrid`是EasyUI中的一个核心组件,它用于展示数据表格,支持分页、排序、过滤等多种操作。在实现多条件筛选时,我们需要对datagrid的`columns`属性进行配置,定义每一列的显示方式和筛选条件。例如,我们...
easyui的datagrid的数据渲染
在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。"EasyUI Datagrid 导出到Excel"这一主题涉及的是如何将EasyUI Datagrid中的数据显示在Excel表格中,...
easyUI datagrid的打印,datagrid先查询出数据,然后调用html文件做简单的报表打印。IE,Chrome,360浏览器都适用
easyUI datagrid 行上移,下移,置顶,置底的方法