DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridコントロールの同一列内のセル結合

環境/言語:[VB.NET 、.NET Frameworkバージョン1.0]
分類:[.NET]

まさしです、度々失礼します。
DataGridコントロールの同一列内のセルの結合のとき、
実行すると以下の箇所でエラーになります。
なぜでしょうか?

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
joinCells(MyDataGrid, 1)
END Sub

Private Sub joinCells(ByVal dg As DataGrid, ByVal column As Integer)
Dim numRow As Integer
numRow = dg.Items.Count

Dim baseIndex As Integer = 0

While (baseIndex < numRow)
Dim nextIndex As Integer
nextIndex = baseIndex + 1
Dim baseCell As TableCell
baseCell = dg.Items(baseIndex).Cells(column)

While (nextIndex < numRow)

Dim nextCell As TableCell
nextCell = dg.Items(nextIndex).Cells(column)

If getText(baseCell) = getText(nextCell) Then
If (baseCell.RowSpan = 0) Then
baseCell.RowSpan = 2
Else
baseCell.RowSpan += baseCell.RowSpan
End If
dg.Items(nextIndex).Cells.Remove (nextCell)
nextIndex += nextIndex
Else
Exit While
End If
End While
baseIndex = nextIndex
End While
End Sub

Private Function getText(ByVal tc As TableCell)
↓!!!!!この下の行でエラー!!!!!!↓
Dim dblc As DataBoundLiteralControl = CType(tc.Controls(0), DataBoundLiteralControl) 
Return dblc.Text
End Function

エラー内容は、
指定された引数は、有効な値の範囲内にありません。パラメータ名 : index
です。

TableCell は、System.Web.UI.WebControls 名前空間
DataBoundLiteralControl は、System.Web.UI 名前空間です

尚、これは、
http://www.atmarkit.co.jp/fdotnet/dotnettips/092joincells/joincells.html
を参考にしました。
■No6063に返信(まさしさんの記事)

 まさしさん、こんばんは。深山と申します。

 まずはお詫びを。 No6060 は少々口調がきつかったですね(汗) 申し訳ありませんm(__)m
 で、先の内容と矛盾して聞こえてしまうかも知れませんけども、
> TableCell は、System.Web.UI.WebControls 名前空間
> DataBoundLiteralControl は、System.Web.UI 名前空間です
ここまで書く必要はありませんから(^_^;)
# でも、分類は ASP.NET を選んでおいて欲しいかも。


 閑話休題。

> ↓!!!!!この下の行でエラー!!!!!!↓
> Dim dblc As DataBoundLiteralControl = CType(tc.Controls(0), DataBoundLiteralControl) 
>
> エラー内容は、
> 指定された引数は、有効な値の範囲内にありません。パラメータ名 : index
> です。

 エラー内容からすると、 tc ( TableCell )に子コントロールがないのではないでしょうか?

 参照元のコードでは joinCells をコールする前に DataSource を設定してますけど、
まさしさんはされてませんよね。 DataGrid に表示するデータがないのが原因ではないかと
思うのですけど、どうでしょう?

DOBON.NET | プログラミング道 | プログラミング掲示板