- PR -

Gridviewの書式を条件によって設定する

1
投稿者投稿内容
maru
会議室デビュー日: 2008/10/29
投稿数: 3
投稿日時: 2008-10-29 17:35
お世話になります。はじめて投稿します。
VisualStudio2005 VBでWebページを作成しています。

Gridviewの書式を条件によって設定しようとしています。
GridView1_RowDataBoundイベントに
If e.Row.Cells(2).Text < "1" Then
e.Row.Cells(2).ForeColor = Drawing.Color.Red
End If
と記述することによって目的は達成できました。
ところが、Gridviewのページングを有効にすると、エラーになります。
e.Row.Cells.count=1になったので、これが原因だと思います。

Gridviewのページングを有効にしたときに、列の書式を条件によって設定する方法を探しています。
ご存知の方がいらっしゃいましたら教えていただけないでしょうか。

どうぞよろしくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-10-29 17:56
どのタイミングでどんなエラーがでてますか?
もしかすると、ページング用の操作のための行のところでエラーになっているんじゃないかと思いますが。
あと、このプログラムの前にCellの数が2以上のときだけこのプログラムを実行する、とか記述するだけでも回避できるような気がします。
maru
会議室デビュー日: 2008/10/29
投稿数: 3
投稿日時: 2008-10-30 10:07
どっとねっとふぁん様、ご回答ありがとうございます。
ご報告が遅くなりまして申し訳ございません。

ご指摘のとおりでした。
ページング処理の時だけCellの数が1になっていたため、2以上の条件を加えることにより、解決しました。

早急に教えていただきまして、本当にありがとうございます。
周りに聞ける人が誰もいないので、大変に助かりました。
今後ともどうぞよろしくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-10-30 11:23
> ページング処理の時だけCellの数が1になっていたため、2以上の条件を加えることにより、解決しました。

とりあえずの対処としてはそれでいいのかな。
えと、GridViewの行はDataGridRowTypeという行の種類の情報を持っています。
DataGridRowTypeがDataRowの場合だけ処理する、といったプログラムに修正したほうがそれらしいプログラムになると思います。


maru
会議室デビュー日: 2008/10/29
投稿数: 3
投稿日時: 2008-10-30 12:07
どっとねっとふぁん様、本当にありがとうございます。

教えていただいたDataGridRowTypeのヘルプを30分かけて読んで理解し、
   If e.Row.RowType = DataControlRowType.DataRow Then
にたどり着きました。

実は先に解決しましたと書き込んだ後、Heder行まで書式変更されてしまうことにとても悩んでいました。DataGridRowTypeで判定することにより、一緒に解決できました。

思いつかなかったので、ヘルプを見ることも検索することもできていませんでした。
本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)