asp:TemplateField는 rowspan, colspan을 지원하지 않는다.
table형태로 변경하던지 백단에서 헤더를 다시 그려줘야 한다.
뷰단
참고 :
1.ShowHeader="False" 백에서 header를 생성해줄것이기 때문에 기본헤더는 안보이게 처리한다.
2.onrowcreated="gridTest_RowCreated" 이벤트를 통해 헤더를 다시 생성한다
코드 예시 :
<asp:GridView ID="gridTest" runat="server" AutoGenerateColumns="False" ShowHeader="False"
onrowcreated="gridTest_RowCreated" Width="100%">
<Columns>
<asp:TemplateField HeaderText="test1"><ItemTemplate><%# Eval("Test1") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test2"><ItemTemplate><%# Eval("Test2") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test3"><ItemTemplate><%# Eval("Test3") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test4"><ItemTemplate><%# Eval("Test4") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test5"><ItemTemplate><%# Eval("Test5") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test6"><ItemTemplate><%# Eval("Test6") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test7"><ItemTemplate><%# Eval("Test7") %></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="test8"><ItemTemplate><%# Eval("Test8") %></ItemTemplate></asp:TemplateField>
</Columns>
</asp:GridView>
서버단
코드 예시 :
<script runat="server">
protected void gridTest_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
GridView grid = (GridView)sender;
GridViewRow row1 = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
GridViewRow row2 = new GridViewRow(1, 0, DataControlRowType.Header, DataControlRowState.Normal);
row1.Cells.Add(new TableCell { Text = "header", ColumnSpan = 2, HorizontalAlign = HorizontalAlign.Center });
row1.Cells.Add(new TableCell { Text = "test3", RowSpan = 2, HorizontalAlign = HorizontalAlign.Center });
row1.Cells.Add(new TableCell { Text = "header2", ColumnSpan = 5, HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test1", HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test2", HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test4", HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test5", HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test6", HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test7", HorizontalAlign = HorizontalAlign.Center });
row2.Cells.Add(new TableCell { Text = "test8", HorizontalAlign = HorizontalAlign.Center });
grid.Controls[0].Controls.Clear(); // 기본 헤더 제거
grid.Controls[0].Controls.AddAt(0, row1);
grid.Controls[0].Controls.AddAt(1, row2);
}
}
</script>
결과

'IT > ASP.NET' 카테고리의 다른 글
ASP.NET 구성된 개발 웹 서버에 연결할 수 없습니다. (0) | 2020.04.01 |
---|