■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ではない場合に強調表示処理を行うようにしたほうがよい。
|
解決済み
|