FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
楼主: ◇辉◆:
打印 上一主题 下一主题

【已解决】Grid底部合计行功能实现,绝对定位到表格底部!

[复制链接]
14#
发表于 2013-6-7 11:34:28 | 只看该作者
顶,支持楼主。
13#
发表于 2013-6-7 09:04:33 | 只看该作者
JS不怎样懂,能否写成一个方法调用,如calcGridSummary(grid,合计字段的ID);

12#
发表于 2013-6-7 08:57:54 | 只看该作者
嗯,不错,代码有点多,能封装一下,设置个属性就可以显示出来就更好了,增加合计的数据事件,自己来写
11#
发表于 2013-6-7 07:49:26 | 只看该作者
很好!学习一下!
10#
发表于 2013-6-6 18:49:35 | 只看该作者
官网上示例上没有吧?
8#
发表于 2013-6-6 17:02:03 | 只看该作者
又增加了一个示例:-增加合计行绝对定位到分页条上方的示例grid/grid_summary_absolute.aspx。

这个效果可能是很多网友想要的,即使出现滚动条也能一眼看到合计行,不过实现需要一定的技巧。


  1. <script>

  2.         var gridClientID = '<%= Grid1.ClientID %>';
  3.         var gridSummaryID = '<%= hfGrid1Summary.ClientID %>';

  4.         function calcGridSummary(grid) {
  5.             var donateTotal = 0, store = grid.getStore(), view = grid.getView(), storeCount = store.getCount();

  6.             // 防止重复添加了合计行
  7.             if (Ext.get(view.getRow(storeCount - 1)).hasClass('mygrid-row-summary')) {
  8.                 return;
  9.             }

  10.             // 从隐藏字段获取全部数据的汇总
  11.             var summaryJSON = JSON.parse(Ext.getCmp(gridSummaryID).getValue());


  12.             store.add(new Ext.data.Record({
  13.                 'major': '全部合计:',
  14.                 'donate': summaryJSON['donateTotal'].toFixed(2),
  15.                 'fee': summaryJSON['feeTotal'].toFixed(2)
  16.             }));


  17.             // 为合计行添加自定义样式(隐藏序号列、复选框列,取消 hover 和 selected 效果)
  18.             var summaryNode = Ext.get(view.getRow(storeCount)).addClass('mygrid-row-summary');

  19.             // 找到合计行的外部容器节点
  20.             var viewportNode = summaryNode.parent('.x-grid3-viewport');
  21.             // 删除容器节点下直接子节点为 mygrid-row-summary 的节点
  22.             viewportNode.select('> .mygrid-row-summary').remove();

  23.             // 创建合计行的副本
  24.             var cloneSummaryNode = summaryNode.dom.cloneNode(true);
  25.             // 修改合计行的副本的样式,绝对定位,距离底部0px,显示副本(默认是占位隐藏 visibility: hidden;)
  26.             Ext.get(cloneSummaryNode).setStyle({
  27.                 position: 'absolute',
  28.                 bottom: 0,
  29.                 visibility: 'visible'
  30.             });

  31.             // 向容器节点添加合计行的副本
  32.             viewportNode.appendChild(cloneSummaryNode);
  33.        
  34.         }

  35.         // 页面第一个加载完毕后执行的函数
  36.         function onReady() {
  37.             var grid = X(gridClientID);
  38.             grid.addListener('viewready', function () {
  39.                 calcGridSummary(grid);
  40.             });

  41.             // 防止选中合计行
  42.             grid.getSelectionModel().addListener('beforerowselect', function (sm, rowIndex, keepExisting, record) {
  43.                 if (Ext.get(grid.getView().getRow(rowIndex)).hasClass('mygrid-row-summary')) {
  44.                     return false;
  45.                 }
  46.                 return true;
  47.             });
  48.         }

  49.         // 页面AJAX回发后执行的函数
  50.         function onAjaxReady() {
  51.             var grid = X(gridClientID);
  52.             calcGridSummary(grid);
  53.         }
  54.     </script>
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
7#
发表于 2013-6-4 20:54:00 | 只看该作者
{:soso_e179:}
6#
发表于 2013-6-4 18:19:34 | 只看该作者
{:soso_e179:}
5#
发表于 2013-6-4 17:59:09 | 只看该作者
冬天 发表于 2013-6-4 17:03
能显示在分页条的那里,有本页合计和总合计,就完美了。


你想要这样的效果么:


这个也好办,晚上给例子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-21 16:24 , Processed in 0.046433 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表