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‘) + ‘;‘;

如果你喜欢折腾源代码,请使用第四种,最简单,哈哈

如果你喜欢干净的源码,且配置少,代码少,可以用第三种方式

如果你喜欢麻烦,可以用第二或者第一种方式

时间: 2024-08-06 21:12:38

JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式(转)的相关文章

DatagridView列宽设置与对齐方式

一.设置对齐方式 1.列标题居中对齐 dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 但实际上看上去仍然偏左,这是因为存在排序三角形,需要取消排序功能 2.内容居中对齐 dataGridView1.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignme

【WinForm】DatagridView列宽设置与对齐方式

一.设置对齐方式 1.列标题居中对齐 dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 但实际上看上去仍然偏左,这是因为存在排序三角形,可以设置列的SortMode属性值为DataGridViewColumnSortMode.NotSortable,但是失去排序功能. 2.内容居中对齐 dataGridView1.DefaultCellStyle.A

easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案

在onLoadSuccess 中加入如下代码就OK啦 $('#dg3').datagrid({ onLoadSuccess:function(data){ if(data.total==0){ var dc = $(this).data('datagrid').dc; var header2Row = dc.header2.find('tr.datagrid-header-row'); dc.body2.find('table').append(header2Row.clone().css({"

JQuery EasyUI的datagrid的使用方式总结

JQuery EasyUI的datagrid的使用方式总结第一步:添加样式和js脚本在前台添加展示数据表格的table元素 例如: <div> <table id="tt" style="width: 700px;" title="标题,可以使用代码进行初始化,也可以使用这种属性的方式" iconcls="icon-edit"> </table> </div> 注:表格的属性可以

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

EasyUI是一套比较轻巧易用的Jquery控件,在使用过程中遇到一个问题,它的列表控件——datagrid, 在显示日期列的时候,由于后台返回给页面的数据是Json格式的,其中的日期字段,在后台是正常的“2012-11-10 12:18:00”这样的格式,json序列化后返回到前台页面就被转换成一个像 /Date(1419264000000)/的格式,导致easyUI无法解析这个字段.经过一番研究,下面给出两种解决方式 希望能帮到大家! 第一种:比较简单 定义函数:function forma

jQuery EasyUI之DataGrid使用示例

jQuery EasyUI是一个轻量级的Web前端开发框架,提供了很多的现成组件帮助程序员减轻前端代码开发量,之前有个项目中就用到了其中的DataGrid. jQuery EasyUI框架的官方主页:http://www.jeasyui.com/demo/main/index.php.可以下载完整开发包,里面有示例代码可以参考. 由于我使用的是ASP.NET webform技术,下面我就贴出主要的代码以供参考. 在页面中首先要引用相关的css以及js文件,这样才能使用该组件. css部分:  <

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

1dao层 package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.Standa

给Jquery easyui 的datagrid 每行增加操作链接

我们都知道Jquery的Easy-UI的datagrid可以添加并且自定义Toolbar,这样我们选择一行然后选择toolbar的相应按钮就可以对这行的数据进行操作.但实际项目里我们可能需要在每行后面加一些操作链接,最常见的就是比如"修改"."删除"."查看"之类.如下图: 凡事都怕但是!Easy-UI的Datagrid没有直接添加link的属性.查看Easy-UI的帮助文档,看到一个formater:格式化函数,可以对某一行进行格式化,然后通过

jQuery EasyUI 在datagrid上使用combotree 进行多选

datagrid本身有编辑功能,根据官方说明,在需要编辑的列上,加上editor 属性即可.具体的类型有以下几种: text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree. 最近想利用combotree实现一个可以多选的树,途中遇到一些问题,放到这里分享一下: 1. 基本写法: editor="{type:'combotree',options:{url:'datagrid_data.json',multip