GridView显示带有中国式报表表头的方法

cognos中国式复杂表头的制作(图列示范) cognos中国式复杂表头的制作,(图列示范) 立即下载

   最近在做的项目包含报表,报表的显示可以用水晶报表的推/拉模式轻松解决,报表的录入这一部分采用的是GridView使用模板列进行录入,但用户提出录入页面要和报表的形式一样,但由于报表采用的是中国式表头,比较复杂。刚开始想到用Div做一个固定表头,在表头下面放置隐藏Header的GridView,并通过JS来控制表头的单元宽度随着GV的单元格大小改变的改变而改变,但这样做比较繁琐。后来发现GridView本身就可以设置多层表头。

方法如下:

   比如要做如下的报表表头

   [图片过宽,建议使用Chrome浏览器]

   


代码如下:

 

   protected void grvTest1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
                //第一行表头,从左到右依次数单元格(只数第一行的单元格,不管它跨了几行还是几列)
                    TableCellCollection tcHeader = targetHeader.Cells;
                    tcHeader.Clear();
                    tcHeader.Add(new TableHeaderCell());
 
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[0].Attributes.Add("rowspan", "3"); //设置单元格属性为竖跨三行
                    tcHeader[0].Text = "";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[1].Attributes.Add("rowspan", "3");
                    tcHeader[1].Text = "编号";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[2].Attributes.Add("colspan", "3"); //设置单元格属性为横跨三列
                    tcHeader[2].Text = "占地面积(平方米)";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[3].Attributes.Add("colspan", "2");
                    tcHeader[3].Text = "图书(万册)";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[4].Attributes.Add("colspan", "2");
                    tcHeader[4].Text = "计算机数(台)";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[5].Attributes.Add("rowspan", "3");
                    tcHeader[5].Text = "多媒体教师座位数(个)";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[6].Attributes.Add("rowspan", "3");
                    tcHeader[6].Text = "语音实验室座位数(个)";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[7].Attributes.Add("colspan", "5");
                    tcHeader[7].Text = "固定资产总值(万元)</th></tr><tr>"; //“</th></tr><tr>”在每一行到最后一个单元格时
                                                                             // 需要加上这个标记表示换下一行
 
                    //第二行表头
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[8].Attributes.Add("rowspan", "2");
                    tcHeader[8].Text = "计";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[9].Attributes.Add("colspan", "2");
                    tcHeader[9].Text = "其中:";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[10].Attributes.Add("rowspan", "2");
                    tcHeader[10].Text = "计";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[11].Attributes.Add("rowspan", "2");
                    tcHeader[11].Text = "其中:当年新增";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[12].Attributes.Add("rowspan", "2");
                    tcHeader[12].Text = "计";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[13].Attributes.Add("rowspan", "2");
                    tcHeader[13].Text = "其中:教学用计算机";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[14].Attributes.Add("rowspan", "2");
                    tcHeader[14].Text = "计";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[15].Attributes.Add("colspan", "2");
                    tcHeader[15].Text = "其中:教学、科研仪器设备资产值";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[16].Attributes.Add("colspan", "2");
                    tcHeader[16].Text = "其中:信息化设备资产值</th></tr><tr>";
 
 
                    //第三行表头
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[17].Text = "绿化用地面积";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[18].Text = "运动场地面积";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[19].Text = "计";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[20].Text = "其中:当年新增";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[21].Text = "计";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[22].Text = "其中:软件<th></tr><tr>";
 
                    //第四行表头
                    tcHeader.Add(new TableHeaderCell()); ;
                    tcHeader[23].Text = "甲";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[24].Text = "乙";
                    for (int i = 25; i <= 38; i++)
                    {
                        tcHeader.Add(new TableHeaderCell());
                        tcHeader[i].Text = (i - 24).ToString();
                    }
        }
    }


运行效果如下:

[图片过宽,建议使用Chrome浏览器]

 

注意:在设值第一行第一列的单元格属性为N的话,那么“</th></tr><tr>"出现的次数应该也为N次

GridView报表总结 立即下载

相关推荐

一个基于GridView实现的多列表头合并显示的用户控件程序例子

一个基于GridView实现的多列表头合并显示的用户控件程序例子,采用ASP.NET+C#开发实现。

让中国式复杂报表不复杂的工具来啦

做过表格的人可能都经历过一件痛苦的事——制作复杂报表。 对于一些报表,如下图生产计划表,由于存在很多维度参数、表内及表间的关联,填写一不小心,报表就错乱了,而且手工调整费时又费力。所谓万能的Excel数据透视表又无法完成多种分类统计,如型号、日期、生产线等。 像这种复杂的报表都有这样的共性: 格式复杂。表头很乱,三五层的大格套小格很常见,还有著名的斜线,没有格线时很容易看走眼。 信息量大。存在各种各样的数据,明细的、汇总的,往往都集中在一张表上。 其实有一种简单的方法,N套具有共性的报表都只要维护

amsonga的博客 215

GridView动态创建列头丶自定义多行合并表头

GridView动态创建列头丶自定义多行合并表头

cognos 简单中国式报表表头的制作(留个脚印)

在使用cognos的过程中,我们难免要制作中国式报表,http://www.cognosusersgroup.com/viewthread.php?tid=1516这个上面很好的说明了关于中国式报表表头的制作,图文的,看起来很方便,但是cognos不提供列的合并,而文中最后也没有说明怎么合并列。下面是我合并列的方法合并之前:选中一个单元格,比如上面那个单元格,然后找到它属性的边框属性然后将样式设为无,并选中预览中的下面那个按钮:注意两幅图片的差别,如此点击确定,然后选中横线下面那个单元格,按照上面的方法做,

寒冰 4351

GNSS/INS松组合导航实战:如何用卡尔曼滤波提升定位精度(附MATLAB代码)

本文深入探讨了GNSS/INS松组合导航的工程实践,详细阐述了如何利用卡尔曼滤波算法融合卫星与惯性数据以提升定位精度。内容涵盖从仿真环境搭建、误差状态卡尔曼滤波器(ESKF)设计,到状态与观测方程实现、噪声参数调试及常见问题排查的全过程,并提供了可直接运行的MATLAB代码,为开发高精度、鲁棒的组合导航系统提供实战指南。

weixin_29057163的博客 162

SIwave仿真手册——电源完整性仿真之PDN阻抗的提取(四)

(想不到我这个弱鸡的博主有一天也有被催更的时候,看到后台被催的消息,我慌了,赶紧写一篇把。) 文章目录3.1 PDN阻抗的提取3.1.1手动完成PDN阻抗的提取1、创建pin group2、创建端口3、数据文件的清理和检查(参考1.3.4&1.3.5)4、添加电容模型(参考2.2.1)(==这一步很重要==)5、开始仿真6、查看仿真结果3.1.2利用向导工具完成PDN阻抗的提取1、点击图标![在这里插入图片描述](https://img-blog.csdnimg.cn/36d974339ea5449

luohuo9844的博客 1万+

Gridview表格控件

Gridview表格控件 效果图:     分析: 使用和ListvVew很像,都是经过适配器将数据绑定到控件上 具体步骤如下: 1、创建GridView控件,并指定列数   android:numColumns="3" 2、创建显示数据项的数据容器,是一个Lauout文件,里面一个ImageView,一个TextView   上面是ImageView,“小白10”是T...

weixin_34267123的博客 295

Cadence SIP Layout 简单教程-第二章

[从whp1920 网易博客迁移至优快云] 第一章在正式布线之前做了必须做的准备工作,下面进入正题,打开Candence SIP RF Layout GXL软件。 第一节 导入外形尺寸 打开SIP设置文件保存路径,如下图所示进入导入DXF页面,选中前一章时画好的外框图。打开导入界面后,再进入DXF In Edit/View Layers界面选择所有层,导入Class选择DRAWING FOR...

whp1920的博客 6939

用GridView设计固定行数的入库单报表

在仓库管理系统中经常打印固定格式的入库单和出库单。如下图所示: 其中,要求行数(假如10行)要固定,也就是说没有数据的要求补空行。其实用GridView很容易就实现了,其中空行的处理是通过datatable实现的。 Code//绑订点验单明细stringsql="select*fromwz_v_dydmxwheredyd...

weixin_34008805的博客 202

【可不卸载重装】VS2019新建项目里没有CUDA选项

问题:VS2019 新建项目里没有CUDA选项,vs也属性没有cuda。这是因为你在Visual Studio 2019安装之前,先安装了CUDA Toolkit。

qq_62844901的博客 1318

mmdetection 实战:基于Mask R-CNN与自定义COCO数据集的目标检测全流程解析

本文详细解析了如何使用mmdetection框架和Mask R-CNN模型,基于自定义COCO数据集完成目标检测任务的全流程。内容涵盖环境搭建、数据格式转换、配置文件定制化、模型训练与评估等核心步骤,并提供了针对工业缺陷检测场景的实用调优思路与避坑指南,帮助开发者高效构建高性能检测模型。

weixin_29046611的博客 136

gridview 输出报表:

 gridview 输出报表:    ///     /// 绘出Excel格式    ///     private void ExportStyle()    {        //序号        this.gvWorkList.Columns[0].HeaderStyle.Width = 40;        this.gvWorkList.HeaderStyle.BackColor

cqin的专栏 702

JAVA实战:通过营地号解析王者荣耀用户数据(战绩、英雄、皮肤全掌握)

本文详细介绍了如何使用JAVA通过营地号解析王者荣耀用户数据,包括战绩、英雄和皮肤信息。通过HttpClient发送请求并解析JSON数据,开发者可以获取玩家对局详情、英雄使用情况和皮肤偏好等关键指标,为游戏数据分析提供实用解决方案。

sun99的博客 865

android 用GridVew实现表格功能Sample

前言 GridView是本身就是个表格,我们见的哇比较多的是用它来显示列表图片,本Demo告诉你如何用GridView制作一个显示文本的表格,相当于MFC的CLIstCtrl控件功能。但是GridbView制作的表格一般都是等宽列的,要实现非等宽列的表格就得用ListView实现。 注:demo源码下载地址: 一、效果图 Demo制作的表格如下图所示:

dxzysk的专栏 4343

本地快速部署谷歌开放模型Gemma教程(基于Ollama)

谷歌最近发布了新一代开源AI模型Gemma,此次发布的 Gemma 相比自家的 Gemini 更加轻量级,模型权重也一并开源。不仅可以在笔记本电脑上运行,而且还免费可商用,支持中文。运行速度飞快。

特立独行的博客 6716

【PCB专题】Allegro导出3D文件

Allegro中如何导出3D文件,有没有一键导出操作?

一点硬件 4986

pandas 表头_超简单:Python 5步去中国式报表表头

我们在处理一些报表时候经常会遇到有中国式报表表头的Excel表(如下图,图来源网络),这对于我们后续的数据处理会带来很大的麻烦,最常见的操作就是打开这个表,手动重新调整表头后再保存。(如果表格小还好,表格数据多的时候,极其不便)为了方便日后的工作(尤其是重复性的工作),我们可以使用Python来处理,详细解读如下:step 1 :先导入pandas,即:import pandas as pdste...

weixin_39942572的博客 529

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

GridView合并表头多重表头无错完美版(以合并3列3行举例)

 15.GridView合并表头多重表头无错完美版(以合并3列3行举例) 效果图: 后台代码: using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.

gsky的专栏 2567

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GridView多行表头合并

多行表头合并, 网上很多实例, 这里写的很详细, 力求让每个人都能看懂. 实现原理:GridView在ASP.NET中最终转为HMTL的表格显示表头。 在GridView创建行表头行时: e.Row.RowType == DatacontrolRowType.Header 清除掉旧的表头, 再重新拼接新的表头. TableHeaderCell thc = new TableHeaderC

乔峰的专栏 6123

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[翻译] Scott Mitchell 的ASP.NET 2.0数据操作教程之十:使用 GridView 和DetailView实现的主/从报表...

ASP.NET 2.0 中的数据操作:: 使用 GridView 和DetailView实现的主/从报表 英文原版 | 代码 | 英文PDF版 导言 在前面的教程我们看到了如何使用两个页面(一个主页,用于列出供应商; 一个明细页,用于显示选定供应商提供的产品)创建主/从报表 . 这种两个页面的报表格式也可以集中在一个页面上. 这篇教程将会使用一个GridView, 它的每一行都包含产...

weixin_30815427的博客 190
上一篇: C#中的delegate 与event(一)
下一篇: 获取采用模板列的GridView中的隐藏列中的值
auto_ptr
博客等级 码龄20年 18粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值