easyUI中的datagrid数据表格经常被用到,结合项目中的使用情况,总结一下datagrid使用中需要注意的一些问题。使用datagrid展示数据,需要在html、css、js中都要编写代码,html中主要是确定datagrid在网页中的位置,css来设置datagrid的样式,js填充datagrid数据。

一 html部分

示例代码如下:

<div class="columntablebox" >

<table id="columnTable" class="easyui-datagrid columntable" fit="false" rownumbers="true" fitColumns="true" pagination="true">

<thead>

<tr>

<th data-options="field:'id'">文章编号</th>

<th data-options="field:'title'" >标题</th>

<th data-options="nowrap:false,field:'pic',align:'center',formatter:imgFormatter">图片预览</th>

<th data-options="field:'ordervalue',editor:'numberbox'">排序值</th>

<th data-options="field:'brief1',formatter:operationFormatter">操作</th>

</tr>

</thead>

</table>

</div>

关于datagrid里面属性的含义大家可以在网上查资料进行了解。在这一部分,需要注意的问题有两个,一是需要在datagrid外层包裹一个div。因为一个网页中可能用到多个datagrid,为了便于区分,可以通过外层的div对datagrid进行定位,来找到需要的datagrid元素。第二个需要注意的问题是设置datagrid的单元格内容时,除了正常显示文字外,还有一些特别的要求,比如示例代码中的显示图片、可编辑、包含操作内容等,这就需要对单元格进行格式化设置。如果图片不进行格式化设置,单元格中显示的是图片的链接地址。如果不指定可编辑,默认是不能编辑的状态。如果操作内容不进行设置的话,单元格不能编辑可操作的内容。

二 js部分

1 datagrid的初始化

示例代码:

$('#columnTable').datagrid({

pageSize:5,

pageList:[5],//设置每页显示内容数

width:'auto',

//设置列的宽度

columns:[[{field:'id',title:'文章编号',width:getWidth(0.14),align: 'center'},{field:'title',title:'标题',width:getWidth(0.28),align: 'center'},{field:'pic',title:'图片预览',width:getWidth(0.22),formatter:imgFormatter,align: 'center'},{field:'ordervalue',title:'排序值',width:getWidth(0.11),editor:'numberbox',align: 'center'},{field:'brief1',title:'操作',width:getWidth(0.18),formatter:operationFormatter,align: 'center'}]],

//去掉行点击后的效果

onClickRow:function(rowIndex,rowData){

$(this).datagrid('unselectRow',rowIndex);

},

onLoadSuccess: function(data) {

console.debug("#columnTable onLoadSuccess");

}

});

datagrid的初始化部分主要用到datagrid的属性和事件,datagrid的属性和事件比较多,大家根据需要选择使用,分页用到了pageSize,每页显示的数据量,例子中设置了每页显示5个数据,pageList数据设置可以选择每页显示的数据量,我在这里就写了5,也就是只能选择5,根据需要可以多设置一些,比如[5,10,15]。columns是对列进行设置,和html中设置有些类似,不过列的宽度可以动态设置,比如例子中用getWidth(0.28)函数来动态获取宽度值。datagrid中有一些默认的事件,比如点击行以后,行背景色会发生变化,表示这行已经选择过了,我们的项目中,不需要这种默认效果,初始化的时候对onClickRow事件进行处理,编写代码去掉点击行以后的选中效果。onLoadSuccess事件是对datagrid成功加载数据后的处理,比如数据加载后,对数据进行进一步的处理等等。

2 datagrid的分页及数据加载

(1)分页示例代码

$("#columnTable").datagrid('getPager').pagination({

onSelectPage: function(pageNumber, pageSize) {

column_pageno = pageNumber;

column_pagesize = pageSize;

//显示栏目数据列表

listColumns();

}

});

在分页中会涉及到两个参数,每页显示的数据条数column_pagesize,还有页码column_pageno,这两个参数在显示数据列表的函数中会用到,也就是通过这两个参数想后台请求数据。

(2)数据加载示例代码

$.post(g_ServerAPI + "Column",

{

cmd:'get_adapt',

id:originalId,

pagesize: column_pagesize,

pageno: column_pageno

},

function(data, status) {

if(status == "success") {

var datas = $.parseJSON(data);

// 对返回的数据进行二次处理

if(datas.rows.length>0) {

for(var i = 0; i < datas.Contents.length; i++) {

total = datas.total;

var row = {};

row.id = datas.Contents[i].ID;

row.pic = datas.Contents[i].pic;

row.ordervalue = datas.Contents[i].OrderValue;

row.title = "<div class='articleDrop easyui-droppable' ><a  href=\"javascript:showArticleContent(" + row.objectid + ")\" >" + datas.Contents[i].Article.Title + "</a></div>";

// 注意:这里借用了brief字段做操作处理

row.brief = "\

<a href=\"javascript:editObjectOrderValue(" + datas.Contents[i].ID+ "," + datas.Contents[i].ObjectID + ")\" >编辑</a>\

<a href=\"javascript:deleteColumn(" + datas.Contents[i].ID + ")\" >删除</a>";

rows.push(row);

}

col_datas.total = total;

col_datas.rows = rows;

$("#columnTable").datagrid("loadData", col_datas);

}

}

});

基本思路是先从后台取出数据,然后对得到的数据进行处理,将数据处理后放到col_datas中,col_datas是按照datagrid的填充数据格式进行构造,数据处理完成后,加载到datagrid的表中。

经过以上两个步骤,调试后在html中就可以看到后台的数据,但是datagrid的显示还要进行格式的调整。

三 css部分

要设置数据表格的样式,首先要明确数据表格的结构。在html中写的数据表格比较简单,但实际中easyUI会自动生成很多东西,在css中需要对生成的一些表格进行设置样式,达到我们的目的。

easyUI的datagrid结构如上图所示。

总起来说,分为两个部分,一个是表格,类名是datagrid-view,一个是分页,类名是datagrid-pager。这是两个大的部分。

datagrid-view表格部分又分为两个部分,datagrid-view1和datagrid-view2,datagrid-view1表示表格左侧序号列。datagrid-view2表示我们展示的后台数据。它们都包括表头datagrid-header、表主体datagrid-body和表底部datagrid-footer三个部分。

datagird-view2的表头datagrid-header和表主体datagrid-body是展示数据最主要的部分,需要重点进行设置。表头datagrid-header包含一个类名为datagird-htable的表格,表主体包含一个类名为datagird-btable的表格,如果需要对展示数据的行或者单元格进行设置,则通过表格的类名找到行tr和单元格td进行进一步的设置。

部分示例代码如下

.columntablebox{padding:8px; width: 99%;height: 812px;}

.columntablebox .datagrid .panel-body{height: 739px;width: 80%;border:none}

.columntablebox .datagrid-wrap{border: none;}

.columntablebox .datagrid-view{width: 100%;height: 739px;}

.columntablebox .pagination table{float: right;margin-right: 5px;}

.columntablebox .pagination-info{float: left;display: none;}

.columntablebox .datagrid-header{font-size: 15px;color: #303030;font-weight: bold;}

.columntablebox .datagrid-header-row td{font-size: 15px;color: #404040;font-weight: bold;}

.columntablebox .datagrid-header .datagrid-cell span{font-size: 15px;}

.columntablebox .datagrid-row{height: 98px;}

.columntablebox .datagrid-view2 .datagrid-body{width: 100%;}

.columntablebox .datagrid-header-row{width:10%;height: 36px;}

通过这html、js和css三个方面的基本编码,基本上能够实现easyUI datagrid的使用,当然datagrid功能还有很多,为了实现多样化的功能,也需要大家根据具体情况,有问题可以查看官网资料和其他资料,也可以相互交流,共同提高。

easyUI中datagrid的使用的更多相关文章

  1. EasyUI 中 DataGrid 控件 列 如何绑定对象中的属性

    EasyUI 中 DataGrid 控件 是我们经常用到的控件之一, 但是 DataGrid 控件 在绑定显示列时却不支持对象属性绑定. 模型如下: public class Manager impl ...

  2. EasyUI中datagrid的基本用法

    EasyUI中datagrid是最常用的一个控件了,现在整理一下datagrid的基本语法,先展示下页面效果吧,如下图

  3. EasyUI中datagrid双击事件

    EasyUI中datagrid双击事件 在jsp文件底部增加代码: <script type="text/javascript"> //数据表双击事件 $('#tabl ...

  4. easyUI中datagrid展示对象下属性以及显示多个子属性(Day_37)

    easyUI中datagrid展示对象下属性以及显示多个子属性 显示对象单个属性值 添加formatter属性 <th field="decidedzone" width=& ...

  5. EasyUI中datagrid控件的使用 设置多行表头(两行或多行)

    EasyUI中的datagrid控件十分强大,能生成各种复杂的报表,现在因为项目需要,需要生成一个表头两行的表,找了一些说明文档,以下用一个实例来说明一下: 第一种方法: $('#divData'). ...

  6. 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

    我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...

  7. 修改easyui中datagrid表头和数据不能分开对齐的BUG。

    easyui的datagrid中表头和列只能同时全部向左对齐,全部向右对齐或者居中对齐. 有时候有需求,数据向左或向右,表头居中对齐. 在不修改源码的情况下.下面的代码可以实现该功能. 把下面代码放在 ...

  8. JQuery EasyUI中datagrid的使用

    在学习过程中,可以参照JQuery EasyUI的官方网站学习.地址:http://www.jeasyui.com/demo/main/index.php 在学习JQuery EasyUI中的Data ...

  9. easyui中datagrid标题居中内容居左实现方式

    easyui中的datagrid使用起来,确实还是挺轻巧方便,但是其中也有不少的问题,尤其遇到客户的一些特殊的需求时往往实现得不是很好.这个时候就需要我们自己动手来修改easyui的源码了.easyu ...

随机推荐

  1. php+apache+mysql的安装

    1.LAMP的安装顺序问题,现在是默认安装好了Linux系统,我的版本是Ubuntu 12.04.一般来说比较建议的顺序是Mysql Apache 最后安装PHP,在我实践下来 Apache和Mysq ...

  2. R语言数据分析利器data.table包 —— 数据框结构处理精讲

        R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ...

  3. CSS左侧固定宽 右侧自适应(兼容所有浏览器)

    左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到 ...

  4. DPDK QoS之分层调度器

    原创翻译,转载请注明出处. 分层调度器的时机主要体现在TX侧,正好在传递报文之前.它的主要目的是在每个网络节点按照服务级别协议来对不同的流量分类和对不同的用户的报文区分优先级并排序. 一.概述分层调度 ...

  5. python 之分发包

    setuptools python包的根目录设置setup.py from setuptools import setup, find_packages setup( name = 'm' versi ...

  6. sql server 重命名列(字段)

    调用系统存储过程sp_rename,直接看代码: EXEC  sp_rename  'myTable.oldName','newName','COLUMN' 如果重命名表,则: EXEC  sp_re ...

  7. 【机器学习】代价函数(cost function)

    注:代价函数(有的地方也叫损失函数,Loss Function)在机器学习中的每一种算法中都很重要,因为训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过 ...

  8. 重温Javascript(一)

    工作中要用到JavaScript,一组复习笔记. 一些看法 1. 想想JavaScript目前最常用的宿主环境,浏览器或者服务端V8,都是单线程,所以不用过多的考虑并发的问题,如果是协程来实现异步的方 ...

  9. 早期练手:功能相对比较完善的 js 计算器

    第一次发博客,就先发一个自己早期,刚开始学前端时,用js写的一个计算器吧,计算功能比较少,只有 + - * / ,不过其他功能还是比较完善的,比如: 输出结果后,连续按"=",可以 ...

  10. ACdream 1112 Alice and Bob (sg函数的变形+素数筛)

    题意:有N个数,Alice 和 Bob 轮流对这些数进行操作,若一个数 n=a*b且a>1,b>1,可以将该数变成 a 和 b 两个数: 或者可以减少为a或b,Alice先,问谁能赢 思路 ...