JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式(转)
需求如下
现有数据列三列
Name,Age,CreateDate
数据
张三,18,2000-12-09 :12:34:56
李四,28,2000-12-09 :12:34:56
王麻子,38,2000-12-09 :12:34:56
Jquery Easyui DataGrid中列设置
{ field: 'Name', title: '名称', width: 120 ,align:left},
{field: 'Age', title: '年龄', width: 120 ,align:right},
{ field: 'CreateDate', title: '创建日期', width: 120,align:center},
以上的align属性对列表名和数据都有效,就是列名和数据对齐方式是一样的,
--------------------- --------------------- ---------------------
要想不一样,必须能够单独设置列名或者数据行,对column增加一个字段,
第一种方式,假设align针对列名有效,可以增加一个dataalign针对数据列有效
{ field: 'Name', title: '名称', width: 120 ,align:center,dataalign:left},
{field: 'Age', title: '年龄', width: 120 ,align:center,dataalign:right},
{ field: 'CreateDate', title: '创建日期', width: 120,align:center,dataalign:left},
在onLoadSuccess添加如下代码,针对每个数据列重新
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
onLoadSuccess: function (data) { var fields=$( "#tt" ).datagrid( 'getColumnFields' , false ); //获取数据表的每一行,注意如果不加.datagrid-view2限制,则含有行号表 var bodyTts = $( ".datagrid-view2 .datagrid-body table tr.datagrid-row" ); bodyTts.each( function (ii, objj) { //datagrid主体 table 的每一个tr 的td们 var bodyTds = $(objj).children(); bodyTds.each( function (i, obj) { //获取当前列的信息 var col = $( "#tt" ).datagrid( 'getColumnOption' ,fields[i]); if (!col.hidden && !col.checkbox) { var dataalign=col.dataalign||col.align|| 'left' ; $( "div:first-child" , obj).css( "text-align" , dataalign); } }) }) } |
这种方式的坏处在于数据一般很多,所以遍历这些数据需要花比较多时间
--------------------- --------------------- ---------------------
第二种方式,假设column里面的align是针对数据有效的,另外增加一个headalign来设置表头列对齐
{ field: 'Name', title: '名称', width: 120 ,align:center,headalign:left},
{field: 'Age', title: '年龄', width: 120 ,align:center,headalign:right},
{ field: 'CreateDate', title: '创建日期', width: 120,align:center,headalign:left},
1 onLoadSuccess: function (data) {
2 var fields=$("#tt").datagrid('getColumnFields',false);
3 //datagrid头部 table 的第一个tr 的td们,即columns的集合
4 var panel = $("#tt").datagrid("getPanel");
5 var headerTds =panel.find(".datagrid-view2 .datagrid-header .datagrid-header-inner table tr:first-child").children();
6
7 //重新设置列表头的对齐方式
8 headerTds.each(function (i, obj) {
9 var col = $("#tt").datagrid('getColumnOption',fields[i]);
10 if (!col.hidden && !col.checkbox)
11 {
12 var headalign=col.headalign||col.align||'left';
13 $("div:first-child", obj).css("text-align", headalign);
14 }
15 })
16 }
其实上述两段代码可以看出,第二种方式开销比第一种小很多,所以推荐第二种
红色的#tt是我datagrid的id,请用的时候改成你自己的
上述两种使用方法都是直接配置+代码方式
--------------------- --------------------- ---------------------
第三种方式其实就是第二种 只不过算是扩展,使用起来更简单
1 /**
2 * 扩展表格列对齐属性:
3 * 自定义一个列字段属性:
4 * headalign :原始align属性针对数据有效, headalign针对列名有效
5 *
6 */
7 $.extend($.fn.datagrid.defaults,{
8 onLoadSuccess : function() {
9 var target = $(this);
10 var opts = $.data(this, "datagrid").options;
11 var panel = $(this).datagrid("getPanel");
12 //获取列
13 var fields=$(this).datagrid('getColumnFields',false);
14 //datagrid头部 table 的第一个tr 的td们,即columns的集合
15 var headerTds =panel.find(".datagrid-view2 .datagrid-header .datagrid-header-inner table tr:first-child").children();
16 //重新设置列表头的对齐方式
17 headerTds.each(function (i, obj) {
18 var col = target.datagrid('getColumnOption',fields[i]);
19 if (!col.hidden && !col.checkbox)
20 {
21 var headalign=col.headalign||col.align||'left';
22 $("div:first-child", obj).css("text-align", headalign);
23 }
24 })
25 }
26 });
使用方法:
保存为jquery.easyui.datagrid2.js文件,引用
添加<script src="jquery.easyui.datagrid2.js" type="text/javascript"></script>
增加headalign属性
{ field: 'Name', title: '名称', width: 120 ,align:center,headalign:left}
-------------------------------------------------
第四种方式,源码修改,终极大法
我是用Jquery Easyui 1.2.4的源码(未经加密的)来说明的,其它版本大致应该不会相差很远
其实主要就是text-align这个属性上面
在源码搜索text-align,第7929行有如下代码(buildGridHeader方法内)
cell.css( 'text-align' , (col.align || 'left' )); |
这句话就是修改列表头的对齐方式.默认是left,也就是说不用设置,就是left
很明显,还是套用第二种方式的,列增加headalign属性,7929行改成
cell.css( 'text-align' , (col.headalign||col.align|| 'left' )); |
然后,就结束了,哈哈
其实你要是喜欢针对数据列dataalign,9496行也有text-align(renderRow方法内)
style += 'text-align:' + (col.align || 'left' ) + ';' ; |
可以用来等同第一种方式
style += 'text-align:' + (col.dataalign||col.align|| 'left' ) + ';' ; |
如果你喜欢折腾源代码,请使用第四种,最简单,哈哈
如果你喜欢干净的源码,且配置少,代码少,可以用第三种方式
如果你喜欢麻烦,可以用第二或者第一种方式
JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式(转)的更多相关文章
- 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件
jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...
- 给Jquery easyui 的datagrid 每行增加操作链接(转)
http://www.thinkphp.cn/code/207.html 通过formatter方法给Jquery easyui 的datagrid 每行增加操作链接我们都知道Jquery的EasyU ...
- 修改easyui中datagrid表头和数据不能分开对齐的BUG。
easyui的datagrid中表头和列只能同时全部向左对齐,全部向右对齐或者居中对齐. 有时候有需求,数据向左或向右,表头居中对齐. 在不修改源码的情况下.下面的代码可以实现该功能. 把下面代码放在 ...
- JQuery EasyUI的datagrid的使用方式总结
JQuery EasyUI的datagrid的使用方式总结第一步:添加样式和js脚本在前台添加展示数据表格的table元素 例如: <div> <table id="tt& ...
- JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能
JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...
- easyUI的datagrid控件日期列不能正确显示Json格式数据的解决方案
EasyUI是一套比较轻巧易用的Jquery控件,在使用过程中遇到一个问题,它的列表控件——datagrid, 在显示日期列的时候,由于后台返回给页面的数据是Json格式的,其中的日期字段,在后台是正 ...
- 运用EasyUI中datagrid读取数据库数据实现分页
1dao层 package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import org.hibernate ...
- JQuery EasyUI中datagrid的使用
在学习过程中,可以参照JQuery EasyUI的官方网站学习.地址:http://www.jeasyui.com/demo/main/index.php 在学习JQuery EasyUI中的Data ...
- jQuery EasyUI之DataGrid使用示例
jQuery EasyUI是一个轻量级的Web前端开发框架,提供了很多的现成组件帮助程序员减轻前端代码开发量,之前有个项目中就用到了其中的DataGrid. jQuery EasyUI框架的官方主页: ...
随机推荐
- 如何让你的eclipse运行更快和eclipse常用快捷键
方案来之网络,已自测... 原地址:戳进来 1.在eclipse启动的时候,它总是会搜索让其运行的jre,往往就是这个搜索过程让eclipse启动变慢了.(没设置时,等2-3s出现进度条,设置后直接出 ...
- AngularJS学习-初识
angularJS定义和特点 1.google前端开源框架 2.MVVM(model view view-model)设计模式 : Model将和ViewModel互动(通过$scope对象),将监听 ...
- win8 + ubuntu14.04 安装步骤
一.首先,从硬盘上划分一个空闲分区(推荐最少20G,每个人也可以按照自己的需要自行设定).记住各个分区的容量,方便安装时辨认.并从Ubuntu官方网站上下载Ubuntu 14.04 LTS 光盘镜像. ...
- 精通 Oracle+Python,第 7 部分:面向服务的 Python 架构
面向服务的架构 (SOA) 在当今的业务战略中具有至关重要的作用.混搭企业组件已成为所有任务关键的企业应用程序的标准要求,从而确保在企业架构的各层实现顺畅的服务编排.对此,Python 是一个不错的选 ...
- 关于Android中传递数据的一些讨论--备用
在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...
- Start of Something New
Hi Guys This will be the blog of SCaffrey for some time before he creates his own site:) Have a nice ...
- ASP.NET(C#)常用数据加密和解密方法汇总
一. 数据加密的概念 1. 基本概念 2. 基本功能 3. 加密形式 二. 数据加密的项目应用和学习 1. 媒体加密:DRM 2. 文件加密:文本 ...
- bzoj 2818: Gcd 歐拉函數
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1633 Solved: 724[Submit][Status] Descript ...
- BZOJ 4008 亚瑟王
Description 小K不慎被LL邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游 ...
- iOS程序开发引用的第三方库之间出现duplicate symbol时的处理方法
iOS程序集成的第三方库过多时,很容易出现某几个库同时用到了一样的函数库,也就是在你的程序link时会提示duplicate symbol,而重复的符号又不是由你自己程序的代码造成的,也就说没法通过直 ...