C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 76 を表示中)
■44609 / )  Re[5]: TemplateFieldの特定単語を強調表示したい
□投稿者/ gtk2k (134回)-(2009/12/13(Sun) 18:46:50)
2009/12/13(Sun) 18:59:16 編集(投稿者)
2009/12/13(Sun) 18:56:46 編集(投稿者)
2009/12/13(Sun) 18:55:39 編集(投稿者)
2009/12/13(Sun) 18:53:52 編集(投稿者)


e.Row.Cells.Countは、行にあるすべてのセルの数を返す。
(普通はすべての列の数と等しいが、カスタマイズしている場合はその限りではない)
データ表示列以外の編集ボタンや選択ボタンを表示する列、また非表示にしている列も含まれる。
なので、データを表示するセル以外にその行にその他の列が含まれている場合、
e.Row.Cells.Countはその分多い数を返す。
なので、e.Row.Cells.Countでのループは本来不適切なものとなる。
(なぜe.Row.Cells.Count - 1としていたのか理由はわからんが)

データ列数でループを行う場合は
For i As Integer = 1 To CType(GridView1.DataSource, DataTable).Columns.Count
Next
というように、DataSourceにバインドしたDataTableの列数でループするほうがいい。
(ただし、場合によってはこれでもだめな場合が出てくる)

CType(GridView1.DataSource, DataTable).Columns.Countでループを行い
(e.Row.Cells.Countでループしてもかまわん)
かつ、
Dim dumLabel As Label = e.Row.FindControl("Label" & i)
If dumLabel IsNot Nothing Then
dumLabel.Text = dumLabel.Text.Replace("一郎", "<B Style='background-color:#fff495'>一郎</B>")
End If
と、FindControlで取得した結果がNothingではない場合に強調表示処理を行うようにしたほうがよい。
解決済み
返信 編集キー/


管理者用

- Child Tree -