java_easyui体系之DataGrid(1)[转]

一:简介

以表格的形式展示数据、项目中式很常见的一个使用、table展示数据、牵扯到分页、上一页下一页、首页、尾页、翻页、选中展示的记录用于操作、总记录数等等、使用DataGrid很容易实现这一点。

二:页面源码

各个字段在页面中都有详细的说明

datagrid.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <title>My JSP ‘original.jsp‘ starting page</title>

    <link rel="stylesheet" type="text/css" href="css/easyui/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="css/easyui/icon.css">
    <link rel="stylesheet" type="text/css" href="css/easyui/demo.css">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.easyui.min.js"></script>
    <script type="text/javascript">
    </script>

        <div data-options="region:‘north‘,title:‘North Title‘,split:false" style="height:100px;"> </div>
        <div data-options="region:‘south‘,title:‘South Title‘,split:true" style="height:100px;"> </div>
        <div data-options="region:‘east‘,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‘" href="datagridtaps.html" style="overflow: hidden;"></div>

内嵌页面datagridtaps.html:

    <title>dategridtaps.html</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
            $(function(){
                $(‘#datagrid‘).datagrid({
                    url:‘login_getJson.action‘,
//                      title: ‘ssss‘,
                    iconCls:‘icon-save‘,
                    pagination:true,
                    pageSize:10,
                    pageList:[10,20,30,40,50,60,70,80,90,100],
                    fit:true,//使表格自适应
                    fitColumns:true,//使得表格中所有的列宽相加等于自适应的宽度、也就是浏览器改变大小的时候下方会不会出现滚动条、一般只有在列较少的时候使用
                    nowrap:false,//表格中的文字可以换行、默认是false、不能换行、这样在文字很多的时候就看不到全部:使用真实的数据去测试
                    border:false,
                    idFeild:‘id‘,//标识、会记录我们选中项的id、不一定是id、通常使用主键
                    sortName:‘id‘,//设置默认排序时的 字段(必须是field中的一个字段)
                    sortOrder:‘asc‘,//是按照升序还是降序排序   但是仅仅添加这两个字段并不会自动排序、这样写的意义就是前台会自动的向后台传递两个参数:sort order,我们可以在后台查询记录的时候进行排序
                    columns:[ [{
                            title:‘编号‘,
                            field:‘id‘,
                            width:100,//必须要给
//                              sortable:true,//指定按照这个排序
                        },{
                            title:‘姓名‘,
                            field:‘userName‘,
                            width:100,//必须要给

                        },{
                            title:‘密码‘,
                            field:‘passWord‘,
                            width:100,//必须要给
                        }] ]

                });
            });
        </script>

        <div class="easyui-tabs" data-options="fit:true,border:false">
            <div title="用户管理">
                <table id="datagrid"></table>
            </div>
        </div>

三:后台源码

这里没有和数据库进行交互、仅在方法中手动构造一个UserDTO的List

public String getJson() throws IOException{
    List<userdto> userList = new ArrayList<userdto>();
    userList.add(new UserDTO("1","chy","123"));
    userList.add(new UserDTO("2","mxx","123"));
    userList.add(new UserDTO("3","chk","123"));
    //当与后台交互时、可以根据前台回传的页号与每页记录数查询数据
    //List<userdto> userList = userService.getUsers(page, rows); 这样就可以动态获取每页记录数、前台动态展示。
    //但是现在前台的总页数却变成每页的记录数、这样就要求还要有个service查询总记录数、然后重新构造Json传回到前台
    //int count = userService.getUersCount();

    /*
     * 想要按照某个列进行排序的时候、就使用前台传过来的关于排序的字段和排序方式 sort、order
     * List<userdto> userList = userService.getUsers(page, rows, sort, order)
     */
    System.out.println("sort" + sort + " order" + order);

    Map<string, object=""> m = new HashMap<string, object="">();
    m.put("total", 12);
    m.put("rows", userList);

    System.out.println(getJson(m));

    PrintWriter pw  = ServletActionContext.getResponse().getWriter();
    pw.write(getJson(m));
    pw.flush();
    pw.close();
    return null;
}</string,></string,></userdto></userdto></userdto></userdto>

注意对Json的处理:前台需要的是一个含有total、rows对象的Json、所以使用Map包装了一下、同时这里使用的是JackJson、速度比较块。

private String getJson(Object o) throws IOException,
        JsonGenerationException, JsonMappingException {
    ObjectMapper om = new ObjectMapper();
    StringWriter sw = new StringWriter();
    JsonGenerator jg = new JsonFactory().createJsonGenerator(sw);
    om.writeValue(jg, o);
    jg.close();
    return sw.toString();
}

四:补充说明

1、 内嵌html页面、html页面中有class=”easyui-tabs”的div

2、 在内嵌html页面的那个panel中要添加一个style=”overflow:hidden;”属性、针对谷歌浏览器的滚动条。

3、 Datagrid 有分页属性pagination:他的子选项pageSize——每页显示的记录数 pageList——供于选择的每页的数量。

4、 每次请求后台都会向后台传递两个默认的参数、page(当前页号)、rows(每页总记录数)、当我们使用排序时、指定排序的字段和规则时、就会多传两个参数:sort(排序的字段)、order(排序方式:asc、desc)。我们可以根据这些参数来查询记录、

5、 传入的前台的Json格式的字符串要进行特殊处理、否则会错误的显示总记录数。具体处理看后台代码中关于Json的处理。

时间: 2024-10-11 18:06:56

java_easyui体系之DataGrid(1)[转]的相关文章

jquery easyui里datagrid用法记录

1.删除行方法(deleteRow) $('#ruleManagementTable').datagrid('deleteRow', 1); //1代表选中的行索引 2.删除多行数据 var rows = $('#ruleManagementTable').datagrid("getSelections"); //获取你选择的所有行 //循环所选的行 for(var i =0,l=rows.length;i<l;i++){ var index = $('#ruleManageme

Oracle 逻辑体系

Oracle 逻辑体系 主题 Oracle 逻辑体系 参考资料 Oracle 逻辑体系 表空间.模式.用户.段.区.块 Oracle中的数据逻辑上存储于表空间,物理上则存储于属于表空间tablespace的数据文件上(DBF文件).表空间的物理体现是一个或多个DBF文件.数据库由一个或多个被称为表空间的逻辑存储单元构成.表空间是数据库恢复的最小单元.表空间是个逻辑上的概念. 模式schema就是指一个用户下所有对象的集合:创建一个新用户,该用户下没有对象则schema不存在,如果创建一个对象,则

认知,构建个人的知识体系(上)

1.前言 本文将聊聊我对构建个人知识体系的一些想法,主要是为了提升自我认知.从个人经历开始,谈谈对知识的划分,也就是一个是什么,为什么的过程. 2.缘起 把时间回到一年前,那时候我工作快一年了,得益于前面的一些努力,工作比较顺利.特别是技术上,没有遇到太多过无法解决的问题.同时也开始迷茫,工作难道就是这个轻松的样子?三五年之后那不是很无趣,该怎么办? 想找到这个问题的答案,而最好的方式莫过于,亲自去了解那些三五年工作经验的人是怎么的样子. 因此从那时候起,关注了不少来公司面试的人的简历,也有过几

datagrid不能显示数据,原因在于JSON字符串存在特殊字符

最近在使用easyui的datagrid展示报表时老是出现报表不能正常显示的情况,看所拼接而成的JSON格式数据表面上却没任何的问题,根据经验排查了一下所生产字符串中是否含有特殊字符,果然查到部分字段里存在回车换行符,手动替换之后报表显示正常.问题找到了,接下来就是怎么解决问题的事: 一.从根源解决问题,在数据提交保存的时候就把该替换的全替换掉,一劳永逸.但写出来的东西很长,是不是有点难看. content=trim(Replace(Replace(Replace(Replace(Request

2016年本博客知识体系引导(持续更新)

前言 为了方便大家的阅读以及自己的知识体系的建立,特意来写出这个引导文章.以前我是遇到什么写什么,想到什么写什么,从2016年开始我将围绕这个知识体系来写文章,从点到面来逐步建立并完善自己的知识体系,同时也欢迎大家关注我的博客. 1.Android IPC机制 Android IPC机制(一)开启多进程 Android IPC机制(二)用Messenger进行进程间通信 Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用 Android IPC机制(四

2015-2016前端知识体系

一.框架与组件 ?bootstrap等UI框架设计与实现 伸缩布局:grid网格布局 基础UI样式:元素reset.按钮.图片.菜单.表单 组件UI样式:按钮组.字体图标.下拉菜单.输入框组.导航组.面包屑.分页.标签.轮播.弹出框.列表.多媒体.警告 响应式布局:布局.结构.样式.媒体.javascript响应式 第三方插件:插件管理 ?jQuery.zepto使用原理以及插件开发 支持amd.cmd.全局变量的模块化封装 $.fn.method = function(){} ?mvc/mvv

datagrid 里面的formatter方法

A.{field:'station_staus',title:'工位状态',width:250,align:'center',formatter: function(value,row,index){ if (row.station_staus==0){ return "现实"; } if(row.station_staus==1){ return "虚拟"; } }}, B.function(value, row, index) { return "&l

EasyUI DataGrid 应用示例

我们使用如下标签来创建表格 <table id="dg"></table> JS代码如下: $('#dg').datagrid({        columns:[[            {field:'TIME',title:'标题1,width:140},            {field:'SUM_NUM',title:'标题2,width:140, styler:function(value,row,index){                  

安全狗Poon:如何基于云端构建安全体系

日前,ArchSummit 2015 全球架构师峰会在深圳举行,知名互联网安全品牌安全狗作为本次大会的重要赞助方重装亮相本次大会并为大家带来题为"如何基于云端构建安全体系"的主题演讲. ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者.架构师的技术大会,参会者中超过50%拥有8年以上的工作经验.本次与安全狗的合作,是其对云安全领域的目光聚焦,也是对当前企业安全需求的很好回应. 安全狗在本次峰会的演讲者是其首席安全架构师程Poon.Poon是一个长期从事WE