データグリッドビューでセルを縦に結合したい場合。
[joinCells]等で結合関数をネットで拾って来ればOKではないかと。
が、結合してしまうと、再読込の時等、
サーバサイドがズレてしまったセルから値をとってこようとしたりして
どうにも都合が悪い。
で、いつも結局、結合でなくて、他のセルを空白&線を消す処理にしている。
↓以下、そのバージョン。データバインドした後に。
'★使い方
'1つ目の引数は結合風にする列。2つ目の引数は比較に使用する列。
'-------------------------------
Me.joinCells(Me.dgrid, 3,
0) '3列目を結合風。判断は0列目の値を基準とする。
Me.joinCells(Me.dgrid, 2,
0) '2列目を結合風。判断は0列目の値を基準とする。
Me.joinCells(Me.dgrid, 1,
0) '1列目を結合風。判断は0列目の値を基準とする。
'-------------------------------
'結合風関数。
#Region "joinCells"
Public Sub joinCells(ByVal dg As GridView,
ByVal column As
Integer, _
ByVal
HikakuColumn As Integer)
Dim numRow As Integer = dg.Rows.Count
Dim baseIndex As Integer = 0
Dim nextindex As Integer
Dim baseCell As
TableCell
Dim nextCell As
TableCell
Do While (baseIndex
< numRow)
nextindex =
baseIndex + 1
baseCell =
dg.Rows(baseIndex).Cells(column)
Do While (nextindex
< numRow)
nextCell = dg.Rows(nextindex).Cells(column)
If (getText(dg.Rows(nextindex).Cells(HikakuColumn)) =
getText(dg.Rows(baseIndex).Cells(HikakuColumn))) Then
nextindex = nextindex + 1
nextCell.Text = ""
nextCell.Style.Item("border-top-color")
= "white"
Else
Exit Do
End If
baseIndex =
nextindex
End Sub
#End Region
#Region "getText"
Public Function
getText(ByVal tc As
TableCell) As String
Dim dblc As
DataBoundLiteralControl
dblc =
tc.Controls(0)
Return dblc.Text
End Function
#End Region
0 件のコメント:
コメントを投稿