GridView显示带有中国式报表表头的方法
2011-11-26 23:50
323 查看
最近在做的项目包含报表,报表的显示可以用水晶报表的推/拉模式轻松解决,报表的录入这一部分采用的是GridView使用模板列进行录入,但用户提出录入页面要和报表的形式一样,但由于报表采用的是中国式表头,比较复杂。刚开始想到用Div做一个固定表头,在表头下面放置隐藏Header的GridView,并通过JS来控制表头的单元宽度随着GV的单元格大小改变的改变而改变,但这样做比较繁琐。后来发现GridView本身就可以设置多层表头。
方法如下:
比如要做如下的报表表头
[图片过宽,建议使用Chrome浏览器]
![](http://hi.csdn.net/attachment/201111/26/0_1322322701AAJG.gif)
代码如下:
运行效果如下:
[图片过宽,建议使用Chrome浏览器]
![](http://hi.csdn.net/attachment/201111/26/0_132232273217Ce.gif)
注意:在设值第一行第一列的单元格属性为N的话,那么“</th></tr><tr>"出现的次数应该也为N次
方法如下:
比如要做如下的报表表头
[图片过宽,建议使用Chrome浏览器]
![](http://hi.csdn.net/attachment/201111/26/0_1322322701AAJG.gif)
代码如下:
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浏览器]
![](http://hi.csdn.net/attachment/201111/26/0_132232273217Ce.gif)
注意:在设值第一行第一列的单元格属性为N的话,那么“</th></tr><tr>"出现的次数应该也为N次
相关文章推荐
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- GridView数据源为空时显示表头方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- gridview 绑定数据为空时,表头部分内容显示的解决方法
- GridView控件无数据也显示表头方法二[转]
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- gridview无数据行时显示表头的方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- gridview无数据行时显示表头的方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- 绑定GRIDVIEW时无数据显示表头方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- 解决 GridView 多行表头显示 的方法
- GridView,空数据时显示表头最简单的方法!
- 让Gridview在没有数据的时候显示表头
- GridView无数据显示表头
- 如何让Gridview在没有数据的时候显示表头(asp.net)
- DB2 DATE类型在显示的时候,带有00:00:00,去掉的方法,使用VARCHAR()函数