我会用一个GridView和它的RowCreated事件产生头中的额外的行:
ASPX:
<asp:GridView ID="GridView1" runat="server" OnRowCreated="GridView1_RowCreated" ></asp:GridView>
代码隐藏(VB.Net):
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
'fake data
Dim tbl As New DataTable
tbl.Columns.Add(New DataColumn("EmpName", GetType(String)))
tbl.Columns.Add(New DataColumn("EmpID", GetType(String)))
tbl.Columns.Add(New DataColumn("AdminCode", GetType(String)))
tbl.Columns.Add(New DataColumn("P1Hours", GetType(String)))
tbl.Columns.Add(New DataColumn("P1FTE", GetType(String)))
tbl.Columns.Add(New DataColumn("P2Hours", GetType(String)))
tbl.Columns.Add(New DataColumn("P2FTE", GetType(String)))
tbl.Columns.Add(New DataColumn("P3Hours", GetType(String)))
tbl.Columns.Add(New DataColumn("P3FTE", GetType(String)))
For i As Int32 = 1 To 100
Dim newRow = tbl.NewRow
newRow("EmpName") = "EmpName" & i
newRow("EmpID") = "EmpID" & i
newRow("AdminCode") = "AdminCode" & i
newRow("P1Hours") = "P1Hours" & i
newRow("P1FTE") = "P1FTE" & i
newRow("P2Hours") = "P2Hours" & i
newRow("P2FTE") = "P2FTE" & i
newRow("P3Hours") = "P3Hours" & i
newRow("P3FTE") = "P3FTE" & i
tbl.Rows.Add(newRow)
Next
Me.GridView1.DataSource = tbl
Me.GridView1.DataBind()
End If
End Sub
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.Header Then
'Build own custom header.
Dim grid As GridView = DirectCast(sender, GridView)
Dim newHeaderRow As New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert)
Dim oTableCell As New TableCell()
'Add empty cell
newHeaderRow.Cells.Add(oTableCell)
'Add empty cell
oTableCell = New TableCell()
newHeaderRow.Cells.Add(oTableCell)
'Add empty cell
oTableCell = New TableCell()
newHeaderRow.Cells.Add(oTableCell)
'Add P1(PracticeName)-Cell
oTableCell = New TableCell()
oTableCell.Text = "P1(PracticeName)"
oTableCell.ColumnSpan = 2
oTableCell.Font.Bold = True
oTableCell.HorizontalAlign = HorizontalAlign.Center
newHeaderRow.Cells.Add(oTableCell)
'Add P2-Cell
oTableCell = New TableCell()
oTableCell.Text = "P2"
oTableCell.ColumnSpan = 2
oTableCell.Font.Bold = True
oTableCell.HorizontalAlign = HorizontalAlign.Center
newHeaderRow.Cells.Add(oTableCell)
'Add P3-Cell
oTableCell = New TableCell()
oTableCell.Text = "P3"
oTableCell.ColumnSpan = 2
oTableCell.Font.Bold = True
oTableCell.HorizontalAlign = HorizontalAlign.Center
newHeaderRow.Cells.Add(oTableCell)
grid.Controls(0).Controls.AddAt(0, newHeaderRow)
End If
End Sub
如果你需要C#,你可以将它转换成here。
这是结果: