IT/ASP.NET

ASP.NET ROWSPAN COLSPAN asp:GridView 다중행 만들기

하루콩콩 2025. 3. 24. 14:46
반응형

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