ASP.NET : VB : GridView のセル結合
- 結果イメージ(左側は結合する前、右側は結合後)
- 概要
- GridViewのコードを抜粋。
- default.aspx
- <asp:GridView ID='gv2' runat='server'>
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat='server' Text='No.' style='background-color:#00ff80' />
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat='server'><%# Container.DataItem('No').ToString %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat='server' Text='B' style='background-color:#00ff80' />
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat='server'><%# Container.DataItem('B').ToString %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat='server' Text='C' style='background-color:#00ff80' />
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat='server' Text='<%# DataBinder.Eval(Container.DataItem, 'C') %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView> - default.aspx.vb
- Dim dt As New DataTable
dt.Columns.Add("No")
dt.Columns.Add("B")
dt.Columns.Add("C")
dt.Rows.Add(New Object() {"1.", "▲", "■"})
dt.Rows.Add(New Object() {"□", "△", "○"})
dt.Rows.Add(New Object() {"X", "Y", "Z"})
dt.Rows.Add(New Object() {"2.", "▲", "■"})
dt.Rows.Add(New Object() {"□", "△", "○"})
dt.Rows.Add(New Object() {"X", "Y", "Z"})
dt.Rows.Add(New Object() {"3.", "▲", "■"})
dt.Rows.Add(New Object() {"□", "△", "○"})
dt.Rows.Add(New Object() {"X", "Y", "Z"})
gv2.AutoGenerateColumns = False
gv2.DataSource = dt
gv2.DataBind()
'セルの結合(3行セット)
For i = 0 To gv2.Rows.Count - 1 Step 3
'1行目の1列目は項番として3行結合
gv2.Rows(i).Cells(0).RowSpan = 3
'1行目の1列目は右上
gv2.Rows(i).Cells(0).Style("text-align") = "right"
gv2.Rows(i).Cells(0).Style("vertical-align") = "top"
'2、3行目は結合したため非表示
gv2.Rows(i + 1).Cells(0).Visible = False
gv2.Rows(i + 2).Cells(0).Visible = False
'3行目の2と3列目は結合
gv2.Rows(i + 2).Cells(1).ColumnSpan = 2
'3行目の3列目は結合したため非表示
gv2.Rows(i + 2).Cells(2).Visible = False
Next - 参考
- GridView の使い方