MS 的DataGrid 在数据呈现上非常好用,可在WEB打印时,无法在分页时每页都能显示表头,造成诸多不便。
经过一段时间的研究和资料搜索,找到一种解决办法:
要使打印时,每页都可显示表头,需要将 table 改造成 thead ,tbody,tfoot 分组。
现改造如下:
在WEB 应用程序项目中添加 WEB自定义控件,
代码如下:
其中的 namespace 名改为你当前项目的 namespace
简单改造完毕。
为何要去掉 原来系统自动生成的 rules="all" 而且将 border=1 改为0 呢?
rules="all" 表示全部显示线框(上下左右)
如果不去掉,在打印第一页之后的页面时,表头的顶部线条会消失,效果自然不理想。
所以干脆去掉原先表格的线条,自己添加每个 td 的 border . 也就是这行:
现做测试:
添加一个 WEBFORM,名为 FullDataGridTest.aspx
HTML 页代码如下:
HTML代码很简单,只是要注意下 style media="print" ,该样式只在打印时有用。
noprint 即不打印输出, nextpage 为分页点
后台 cs 代码如下: