关闭

easyui datagrid数据网格的使用,以及数据传递和返回的格式

时间: 2018-05-08阅读: 4771标签: easyui

easyui datagrid作用

datagrid以表格格式显示数据,并为选择、排序、分组和编辑数据提供了丰富的支持。数据网格(datagrid)的设计目的是为了减少开发时间,且不要求开发人员具备指定的知识。它是轻量级的,但是功能丰富。它的特性包括单元格合并,多列页眉,冻结列和页脚,等等。  


datagrid数据传递给后台

atagrid数据传递给后台分为,1:开发者自己需要传递至后台的数据  2:datagrid封装的传递的数据。下面分别介绍:


1. 开发者自己需要传递至后台的数据

定义好的datagrid。

<table id="datagrid"></table>

JavaScript  

$('#datagrid').datagrid('options').url ='******/*****.action';

java  

$('#datagrid').datagrid('options').queryParams = {  
        'ProductVo.itemId' : itemId,  
        'ProductVo.productId' : productId,  
        'ProductVo.listPrice' : listPrice,  
        'ProductVo.status' : status  
};

JavaScript    

$('#datagrid').datagrid('reload');

如果项目中使用的struts的Action,直接在action中定义好ProductVo的属性,并设置getter和setter方法,就可以接受到这些参数了。


 2:datagrid封装的传递的数据

datagrid使用了分页的话,其框架自身会向后台传递page、rows这个两个属性值。分别表示当前页和当前页显示的记录行数。可以在action中定义好这两个属性,并同样设置getter和setter方法,就可以接受到这些参数了。
private int page; // 第几页  
private int rows; // 行数  
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;  
}


datagrid数据的返回(后台传给前台)


后台传给前台datagrid数据的格式如下:


如果上面这些属性的Vo类为ProductVo。后台查询数据库返回List<ProductVo> obj;则通过通过下面代码将数据传给前台datagrid:

int totalcount = obj.size();jsONObject resultObj = toGridjson(totalcount ,obj);具体的toGridJson方法如下:

private JSONObject toGridJson(int totalCount, Object obj) {
        // 如果数据集对象为null做个特殊处理
        if(null == obj) {
            JSONObject jsonResult = new JSONObject();
            jsonResult.put("total", totalCount);
            jsonResult.put("rows", new JSONArray());
            return jsonResult;
        }

        if(!Collection.class.isAssignableFrom(obj.getClass())) {
            JSONObject jsonResult = new JSONObject();
            jsonResult.put("total", totalCount);
            jsonResult.put("rows", new JSONArray());
            return jsonResult;
        }

        JSONArray jsonArray = JSONArray.fromObject(obj);
        JSONObject jsonResult = new JSONObject();
        jsonResult.put("total", totalCount);
        jsonResult.put("rows", jsonArray);
        return jsonResult;
    }

在使用JSONAray的转化对象时,存在Integer、Long等类型的参数如果为空会有默认赋值问题,导致datagrid显示的值就有问题,可使用下面方法解决:  

/**
     * 生成datagrid的需要格式 可以杜绝Long、Integer类型的默认赋值问题
     * 
     * @param totalCount
     * @param obj
     * @return
     */
    public static JSONObject toJsonString(int totalCount, Object obj) {
        if(null == obj) {
            JSONObject jsonResult = new JSONObject();
            jsonResult.put("total", totalCount);
            jsonResult.put("rows", new JSONArray());
            return jsonResult;
        }
        if(!Collection.class.isAssignableFrom(obj.getClass())) {
            JSONObject jsonResult = new JSONObject();
            jsonResult.put("total", totalCount);
            jsonResult.put("rows", new JSONArray());
            return jsonResult;
        }
        String json = toJsonString(obj);
        JSONObject jsonResult = new JSONObject();
        jsonResult.put("total", totalCount);
        jsonResult.put("rows", json);
        return jsonResult;
    }
public static String toJsonString(Object obj) {
        String json = null;
        try {
            ObjectMapper mapper = new ObjectMapper();
            json = mapper.writeValueAsString(obj);
        } catch (JsonGenerationException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return json;
    }

上面的ObjectMapper来自: 


你可能注意到了代码中的total、rows,datagrid接收数据只认识这两个属性。然后将封装好的resultObj写给页面就可以了: 

public void ajaxPrintPage(Object resultObj) {
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		PrintWriter writer = null;
		try {
			try {
				writer = response.getWriter();
				if (null == obj) {
					writer.print("");
				} else {
					writer.print(obj.toString());
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		} finally {
			if (writer != null) {
				writer.flush();
				writer.close();
			}
		}
	}


注意:

datagrid前台传给后台和后台传给前台都有一个rows属性。但是这两个属性的名称虽然相同,但是值得类型确不一样。前台传给后台的rows为一个数字值,标识当前页的记录数。后台传给前台的rows为一个数组对象,数组中的内容即为数据Vo集合。datagrid数据传递和返回的格式来源:https://blog.csdn.net/flysun3344/article/details/62486416
站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/742

关闭

解决easyui combobox赋值boolean类型的值时,经常出现的内容显示的value而不是text的bug

在用easyui写项目时,碰到一个combobox的奇葩bug。本来这是一个很简单的combobox赋值,但是当我真正赋值时却出现了问题,经常出现一个bug,就是赋值完,combobox显示的内容是true或者false,

EasyUI之LinkButton禁用和启用

linkbutton 是 jQuery EasyUI 中常用的一个控件,a标签给一个easyui-linkbutton 的class就可以了。disabled在a标签是不管用的,EasyUI的API你会发现:以下才是jQuery禁止和启用linkbutton的正确姿势如下

EasyUI datagrid问题整理

easyui是一种基于jQuery、Angular.、Vue和React的用户界面插件集合。easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。

用easyui从servlet传递json数据到前端页面的两种方法

两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例。通过easyui包含的table标签中的属性来获取后端传递的数据。

JS利用新的参数刷新easyui的tab的panel的url

思路:根据浏览器地址,截取?之前的url作为head,然后把url后面的参数解析为object对象,再根据传入的参数对象,重置参数对象,最后重新拼接url

easyui中formatter的用法

当我们使用easyui需要对某一列进行格式化处理value数据时,可以使用formatter进行格式化,这里以一个商品表举例,商品表中有一个商品类型的字段,数据类型为int,想通过formatter方法来实现:

用easyui实现查询条件的后端传递并自动刷新表格的两种方法

通过datagrid的load方法直接传递参数并自动刷新表格;通过ajax的post函数传递参数并通过loadData方法将数据初始化到表格中;js代码(搜索按钮的点击事件部分)

SpringMVC+EasyUI实现页面左侧导航菜单

EasyUI和JQuery文件是放在webapp/resources目录下的, 需要把 jquery-1.7.2.js也引进去, jsp文件中引入EasyUI的css和js文件的顺序如下, 不要随意调整!!! springMVC的静态资源配置是针对resources目录下所有文件的

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!