GridView显示带有中国式报表表头的方法
来源:互联网 发布:设计大师知乎 编辑:程序博客网 时间:2024/05/17 01:22
最近在做的项目包含报表,报表的显示可以用水晶报表的推/拉模式轻松解决,报表的录入这一部分采用的是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 多行表头显示 的方法
- cognos 简单中国式报表表头的制作(留个脚印)
- Gridview空数据的时候显示表头
- Gridview空数据的时候显示表头
- Gridview空数据的时候显示表头
- gridview的表头垂直居中以及表头多行显示
- 带有表头的单链表
- GridView固定表头的方法两则
- GridView固定表头的方法两则
- Gridview 表头加入checkbox的方法
- GRIDVIEW表头行列合并的设计方法
- GridView固定表头的四种方法
- 固定GridView表头方法的选择
- 绑定GRIDVIEW时无数据显示表头方法
- GridView 自带的全选表头显示文本,重绘表头和表头绑定控件
- 中国式报表
- 网络分析优化图同构Isomorphism算法初探
- 小技术问题 哈哈
- AJAX浏览器兼容性问题
- 微软ASP.NET站点部署指南(4):配置项目属性
- Javascript和CSS浏览器兼容总结
- GridView显示带有中国式报表表头的方法
- 微软ASP.NET站点部署指南(5):部署到IIS上作为测试环境
- STM32 启动文件选择
- CSS3为什么有一堆前缀
- js学习记录2--匿名函数,函数参数
- 【微软ASP.NET站点部署指南】中文版翻译 持续更新中
- 网页布局中易犯的10个小错误
- ios开发中是CoreData的一些详细介绍。
- Javascript作用域、闭包原理以及性能问题