1.目标

1.1表格初始化完成后,已经自动合并好需要合并的行;

1.2当点击字段排序后,重新进行合并;

2.实现

2.1 引入插件

  1. /**
  2. * author ____′↘夏悸
  3. * create date 2012-11-5
  4. *
  5. **/
  6. $.extend($.fn.datagrid.methods, {
  7. autoMergeCells : function (jq, fields) {
  8. return jq.each(function () {
  9. var target = $(this);
  10. if (!fields) {
  11. fields = target.datagrid("getColumnFields");
  12. }
  13. var rows = target.datagrid("getRows");
  14. var i = 0,
  15. j = 0,
  16. temp = {};
  17. for (i; i < rows.length; i++) {
  18. var row = rows[i];
  19. j = 0;
  20. for (j; j < fields.length; j++) {
  21. var field = fields[j];
  22. var tf = temp[field];
  23. if (!tf) {
  24. tf = temp[field] = {};
  25. tf[row[field]] = [i];
  26. } else {
  27. var tfv = tf[row[field]];
  28. if (tfv) {
  29. tfv.push(i);
  30. } else {
  31. tfv = tf[row[field]] = [i];
  32. }
  33. }
  34. }
  35. }
  36. $.each(temp, function (field, colunm) {
  37. $.each(colunm, function () {
  38. var group = this;
  39. if (group.length > 1) {
  40. var before,
  41. after,
  42. megerIndex = group[0];
  43. for (var i = 0; i < group.length; i++) {
  44. before = group[i];
  45. after = group[i + 1];
  46. if (after && (after - before) == 1) {
  47. continue;
  48. }
  49. var rowspan = before - megerIndex + 1;
  50. if (rowspan > 1) {
  51. target.datagrid('mergeCells', {
  52. index : megerIndex,
  53. field : field,
  54. rowspan : rowspan
  55. });
  56. }
  57. if (after && (after - before) != 1) {
  58. megerIndex = after;
  59. }
  60. }
  61. }
  62. });
  63. });
  64. });
  65. }
  66. });

2.2html代码

  1. <table id="simpleDgId" style="height: 300px" />

2.3js代码

  1. var sortFlag = false;
  2. $('#simpleDgId').datagrid({
  3. url:"testController.do?datagrid",
  4. fitColumns:true,
  5. singleSelect:true,
  6. remoteSort: false,
  7. columns:[[
  8. {field:"age",title:"年龄",width:25,align:'center',sortable:true},
  9. {field:"userName",title:"名称",width:25,align:'center',sortable:true},
  10. {field:"mobilePhone",title:"手机",width:25,align:'center',sortable:true}
  11. ]],
  12. onSortColumn:function(sort, order){
  13. sortFlag = true;
  14. if("userName"==sort){
  15. $(this).datagrid("autoMergeCells",[sort]);
  16. }else{
  17. $(this).datagrid("autoMergeCells");
  18. }
  19. },
  20. onLoadSuccess: function(data){
  21. if(!sortFlag) $(this).datagrid("autoMergeCells");
  22. }
  23. });

2.4后台

url:"testController.do?datagrid"

后台数据就是普通的表格数据,这里就不赘述了

2.5效果


 

 

最新文章

  1. Gruntjs: grunt-contrib-jst
  2. 数据挖掘:Weka代码学习
  3. C#快速排序详解
  4. Mysql:表的操作
  5. 我也来玩玩WinForm~BeginInvoke让用户体验更好!
  6. C# 在本地创建文件夹及子文件夹
  7. 单双引号的区别,defined容易疏忽的小地方
  8. Python笔记&#183;第五章—— 列表(List) 的增删改查及其他方法
  9. 面向矩阵的numpy入门笔记
  10. 原码,反码,补码 与(&amp;) 或(|) 非(~) 异或(^) 左移 &lt;&lt; 右移 &gt;&gt; 无符号右移 &gt;&gt;&gt;
  11. Vue-路由配置和使用步骤整理
  12. 给我一台全新的服务器,使用nginx+gunicorn+supervisor部署django
  13. 03-自己封装DateUtil工具类
  14. Rancher 容器管理平台-实战训练营-免费视频培训
  15. 【android】模拟点击某个指定坐标作用在View上
  16. Sql Server 关于SET IDENTITY_INSERT的问题
  17. Eclipse svn 忽略文件夹/ svn 设置不同步
  18. SGU 202. The Towers of Hanoi Revisited
  19. Supper关键字
  20. UICollectionView Layout自定义 Layout布局

热门文章

  1. OSI、TCP、IP、UDP 这些都是啥??
  2. Mybatis框架简单使用
  3. Chrome 无痕模式
  4. Ninject
  5. Git 统计提交代码行数
  6. 【贪心】【堆】Gym - 101775B - Scapegoat
  7. HTTP 499 状态码 nginx下 499错误[转]
  8. Codeforces Round #357 (Div. 2) C. Heap Operations 模拟
  9. PAT甲级1111. Online Map
  10. Ubuntu16.04配置Android5.0编译环境