asp.net gridview多行标题合并(通用)
来源:互联网 发布:小型公司网络搭建 编辑:程序博客网 时间:2024/05/23 02:07
效果图
前台代码
<asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="false"> <Columns> <asp:BoundField DataField ="NO" HeaderText ="No" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第一季度|1月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第一季度|2月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第一季度|3月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第二季度|4月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第二季度|5月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第二季度|6月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第三季度|7月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第三季度|8月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第三季度|9月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|10月|计划" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|10月|实际" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|11月|计划" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|11月|实际" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|12月|计划" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|12月|实际" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|合计" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="上半年|计划" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="上半年|实际" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="上半年|达成率" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="下半年|计划" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="下半年|实际" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="下半年|达成率" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度合计" HeaderStyle-HorizontalAlign ="Center" /> </Columns> </asp:GridView>
后台代码
Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated If e.Row.RowType = DataControlRowType.Header Then Dim intLayerLevel As Integer = 0 Dim tcOld(e.Row.Cells.Count - 1) As TableCell e.Row.Cells.CopyTo(tcOld, 0) Dim intLength As Integer = 0 Dim strSplit As String = "|" '获取最大层数 For i As Integer = 0 To e.Row.Cells.Count - 1 intLength = tcOld(i).Text.Split(strSplit).Length If intLength > intLayerLevel Then intLayerLevel = intLength End If Next '移除标题 e.Row.Cells.Clear() Dim tcHeader As New TableHeaderCell Dim intFlag As Integer = 0 '处理行 For intLevel As Integer = 1 To intLayerLevel For intOldCell As Integer = 0 To tcOld.Length - 1 '取得header的层级名 Dim arrHeader() As String = tcOld(intOldCell).Text.Split(strSplit) If arrHeader.Length = intLevel Then '层级的名称等于当前层数时 intFlag = intFlag + 1 If intOldCell = tcOld.Length - 1 _ OrElse (tcOld(intOldCell + 1).Text.Split(strSplit).Length >= intLevel _ AndAlso arrHeader(intLevel - 1) <> tcOld(intOldCell + 1).Text.Split(strSplit)(intLevel - 1)) _ OrElse tcOld(intOldCell).Text <> tcOld(intOldCell + 1).Text Then tcHeader = New TableHeaderCell() tcHeader.ColumnSpan = intFlag '如果当前header的层数小于最大层数,则设置该cell的行合并值 If intLayerLevel > intLevel Then tcHeader.RowSpan = intLayerLevel - intLevel + 1 '定义表头的所占的行数 End If tcHeader.Text = arrHeader(intLevel - 1) '设置cell文本 tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass '设置cell样式 e.Row.Cells.Add(tcHeader) '添加cell intFlag = 0 End If ElseIf arrHeader.Length > intLevel Then '如果层级的名称大于当前层数时 intFlag = intFlag + 1 '原标题的列数最后一列 '原标题的层数小于当前层数 '当前cell的上级层级名不等于原标题的当前层级名 If intOldCell >= tcOld.Length - 1 _ OrElse tcOld(intOldCell).Text.Split(strSplit).Length < intLevel _ OrElse arrHeader(intLevel - 1) <> tcOld(intOldCell).Text.Split(strSplit)(intLevel - 1) Then tcHeader = New TableHeaderCell tcHeader.ColumnSpan = intFlag tcHeader.Text = arrHeader(intLevel - 1) tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass e.Row.Cells.Add(tcHeader) intFlag = 0 ElseIf tcOld(intOldCell).Text.Split(strSplit).Length <> tcOld(intOldCell + 1).Text.Split(strSplit).Length Then If (arrHeader.Length >= intLevel _ AndAlso tcOld(intOldCell + 1).Text.Split(strSplit).Length >= intLevel _ AndAlso arrHeader(intLevel - 1) <> tcOld(intOldCell + 1).Text.Split(strSplit)(intLevel - 1)) _ OrElse tcOld(intOldCell + 1).Text.Split(strSplit).Length < intLevel Then tcHeader = New TableHeaderCell tcHeader.ColumnSpan = intFlag tcHeader.Text = arrHeader(intLevel - 1) tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass e.Row.Cells.Add(tcHeader) intFlag = 0 End If ElseIf tcOld(intOldCell).Text.Split(strSplit).Length = tcOld(intOldCell + 1).Text.Split(strSplit).Length Then If arrHeader(intLevel - 1) <> tcOld(intOldCell + 1).Text.Split(strSplit)(intLevel - 1) Then tcHeader = New TableHeaderCell tcHeader.ColumnSpan = intFlag tcHeader.Text = arrHeader(intLevel - 1) tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass e.Row.Cells.Add(tcHeader) intFlag = 0 End If End If End If Next If intLevel < intLayerLevel Then If Not tcHeader Is Nothing Then tcHeader.Text = tcHeader.Text + "</tr><tr>" End If End If Next End If End Sub
0 0
- asp.net gridview多行标题合并(通用)
- asp.net gridview 多行标题合并
- GridView 合并标题行
- asp.net GridView多行表头的实现,合并表头
- asp.net gridview通用类
- Asp.net Gridview合并单元格
- Asp.net Gridview合并单元格
- Code52在ASP.NET中合并GridView的两个列标题
- ASP.NET 中 GridView 的合并表头单元格,并且双行标题
- asp.net中gridview数据相同行的列合并
- asp.net GridView、DataGrid行单元格自动合并
- ASP.NET 2.0中合并 GridView 的多表头单元格
- ASP.NET 2.0中合并 GridView 的多表头单元格
- ASP.NET中实现GridView合并
- ASP.NET GridView实现多行多列合并单元格
- asp.net 中的gridview 之合并GridView中某列相同信息的行(单元格)
- ASP.NET中GridView多行操作
- asp.net的GridView通用分页程序(Oracle)
- angular跨域和session失效问题
- hbase集群搭建
- 表达式求值(栈实现)
- C#设计模式- 观察者模式(5)
- restful soap Rpc
- asp.net gridview多行标题合并(通用)
- eclipse界面初始化(附带操作图)
- 如何使用TestFlight进行App构建版本测试
- 电话号码归属地批量查询方法哪个好,三大方法大对比
- JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
- CXF系列之JAX-WS:与Spring3集成并在tomcat部署
- Martin Fowler关于微服务的原文翻译(一)
- Android开发之Intent.Action Android中Intent的各种常见作用
- python 基础(二)