需求如下

现有数据列三列

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列名和数据列分别设置不同对齐方式(转)的更多相关文章

  1. 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件

    jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...

  2. 给Jquery easyui 的datagrid 每行增加操作链接(转)

    http://www.thinkphp.cn/code/207.html 通过formatter方法给Jquery easyui 的datagrid 每行增加操作链接我们都知道Jquery的EasyU ...

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

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

  4. JQuery EasyUI的datagrid的使用方式总结

    JQuery EasyUI的datagrid的使用方式总结第一步:添加样式和js脚本在前台添加展示数据表格的table元素 例如: <div> <table id="tt& ...

  5. JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能

    JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...

  6. easyUI的datagrid控件日期列不能正确显示Json格式数据的解决方案

    EasyUI是一套比较轻巧易用的Jquery控件,在使用过程中遇到一个问题,它的列表控件——datagrid, 在显示日期列的时候,由于后台返回给页面的数据是Json格式的,其中的日期字段,在后台是正 ...

  7. 运用EasyUI中datagrid读取数据库数据实现分页

    1dao层 package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import org.hibernate ...

  8. JQuery EasyUI中datagrid的使用

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

  9. jQuery EasyUI之DataGrid使用示例

    jQuery EasyUI是一个轻量级的Web前端开发框架,提供了很多的现成组件帮助程序员减轻前端代码开发量,之前有个项目中就用到了其中的DataGrid. jQuery EasyUI框架的官方主页: ...

随机推荐

  1. ThinkPHP调试模式与日志记录

    1.可以在config.php中进行设置,默认为关闭状态. 'APP_DEBUG'   =>  true 打开\ThinkPHP\Common\debug.php文件可以查看debug的默认设置 ...

  2. 24种设计模式--模版方法模式【Template Method Pattern】

    周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的 ...

  3. tomcat gc问题总结

    Java内存泄露监控工具:JVM监控工具介绍  http://developer.51cto.com/art/201203/321431.htm 关于施用full gc频繁的分析及解决  http:/ ...

  4. TCP与UDP网络编程总结(一)

    (1):TCP网络编程 我们注意到服务端与客户端通信时是通过客户端的套接字相互通信的,那么服务端的套接字主要是干什么用的呢? TCP服务端设置监听套接字时 int listen(int sock,in ...

  5. 修改Tomcat命令窗口的名字

    在运行多个tomcat窗口的时候,可以通过修改tomcat命令窗口的名字来区分不同的tomcat,修改如下: 找到tomcat下面的这个文件:tomcat_home\bin\catalina.bat, ...

  6. 关于js的callback回调函数的理解

    回调函数的处理逻辑理解:所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的 ...

  7. 最常见的HTTP错误

    1. HTTP 500错误(内部服务器错误)对对HTTP 500错误的定义已经充分证明了这是一个最常见的HTTP错误. 一般来说,HTTP 500 错误就是web服务器发生内部错误时返回的信息. 例如 ...

  8. 修改weblogic11g的JDK版本

    1:进入Weblogic域文件夹下面 [wzh@localhost bin]$ pwd/app/wzh/oracle/middleware/user_projects/domains/base_dom ...

  9. The Lost Art of C Structure Packing

    对齐要求 首先需要了解的是,对于现代处理器,C编译器在内存中放置基本C数据类型的方式受到约束,以令内存的访问速度更快. 在x86或ARM处理器中,基本C数据类型通常并不存储于内存中的随机字节地址.实际 ...

  10. js optimization and performance

    http://www.codeproject.com/Articles/551733/Walkthrough-3aplusUsingplustheplusRequireJSplusOpt http:/ ...