MS 的DataGrid 在数据呈现上非常好用,可在WEB打印时,无法在分页时每页都能显示表头,造成诸多不便。
经过一段时间的研究和资料搜索,找到一种解决办法:

要使打印时,每页都可显示表头,需要将 table 改造成 thead ,tbody,tfoot 分组。
现改造如下:

在WEB 应用程序项目中添加 WEB自定义控件,
代码如下:
其中的 namespace 名改为你当前项目的 namespace

实现 DataGrid 在打印时,每页都可显示 表头namespace FullDataGridControl
}

 
简单改造完毕。

为何要去掉 原来系统自动生成的 rules="all" 而且将 border=1 改为0 呢?
rules="all" 表示全部显示线框(上下左右)
如果不去掉,在打印第一页之后的页面时,表头的顶部线条会消失,效果自然不理想。
所以干脆去掉原先表格的线条,自己添加每个 td 的 border . 也就是这行:

实现 DataGrid 在打印时,每页都可显示 表头markup = markup.Replace("<td","<td  style=\"BORDER-RIGHT:black 1px  solid;BORDER-TOP:black 1px  solid;BORDER-LEFT:black 1px  solid;BORDER-BOTTOM:black 1px  solid\"");
实现 DataGrid 在打印时,每页都可显示 表头            




现做测试:

添加一个 WEBFORM,名为 FullDataGridTest.aspx
HTML 页代码如下:

>

HTML代码很简单,只是要注意下 style media="print" ,该样式只在打印时有用。
noprint 即不打印输出, nextpage 为分页点

后台 cs  代码如下:
实现 DataGrid 在打印时,每页都可显示 表头using System;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Collections;
实现 DataGrid 在打印时,每页都可显示 表头
using System.ComponentModel;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Data;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Drawing;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Web;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Web.SessionState;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Web.UI;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Web.UI.WebControls;
实现 DataGrid 在打印时,每页都可显示 表头
using System.Web.UI.HtmlControls;
实现 DataGrid 在打印时,每页都可显示 表头
实现 DataGrid 在打印时,每页都可显示 表头
namespace FullDataGridControl

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-31
  • 2022-02-07
  • 2021-04-29
  • 2021-05-21
  • 2022-01-24
猜你喜欢
  • 2021-10-24
  • 2022-02-20
  • 2022-01-07
  • 2022-02-01
相关资源
相似解决方案