はじめまして、hanaと申します。
以前は別の掲示板でお世話になっていたのですが、
その掲示板が(会社の)フィルターのせいで見れなくなってしまったので
こちらの掲示板に書き込ませて頂きました。
どうぞよろしくお願いします。
<開発環境>
言語:VB
DB:oracle 10g
Webフォーム
DataGridに表示するデータを、select文にてDBから取得しています。取得したデータによってDataGridのフォントを(セル単位で)太字にしたいのですが、方法が分かりません。
例)「select 弁当名, 価格 from 弁当表」で、
1.から揚げ弁当, 550
2.野菜炒め弁当, 400
3.ハンバーグ弁当, 700
4.コロッケ弁当, 450
とデータを取得した場合、
価格が500円以上の弁当名を太字でDataGridに表示したいです。
この場合ですと、から揚げ弁当とハンバーグ弁当を太字で表示したいです。
現在の、「DBからデータを取得→DataGridで表示」の流れは以下になっています。
1)Dim list As New BentoCollectionを定義
2)select文でデータ取得
3)取得データをそれぞれ定義の変数に代入
Dim bento As New Bento
bento.name = rdr.GetString(0)
bento.price = rdr.GetDecimal(1)
4)1)のlistに追加
list.Add(bento)
5)データがなくなるまで3)、4)を繰り返す
6)DGrid_Bento.Datasourse = listを指定
少々長くなってしまいましたが、
解決方法をご存知の方がいらっしゃいましたら、ご教授お願い致します。
DataGridColumnStyle の派生クラス(編集が必要なら DataGridTextBoxColumn クラス)の派生クラスを作って、OnPaint で自前で描画します。
DataGridColumnStyle から、同じ行の他の列の値を取得するには、OnPaint の引数を使って、
source.GetItemProperties()[ 対象の列名 ].GetValue( source.List[ rowNum ] )
とやればいいはずです。
日本語変ですね。
> DataGridColumnStyle の派生クラス(編集が必要なら DataGridTextBoxColumn クラス)の派生クラスを作って、OnPaint で自前で描画します。
正しくは
DataGridColumnStyle の派生クラス(編集が必要なら DataGridTextBoxColumn の派生クラス)を作って、OnPaint で自前で描画します。
です。
って Web でしたかーorz
俺のは Windows Forms の DataGrid の方法ですね。
たぶん Web では方法が違うと思うんですが、俺は Web の方を使ったことがないのでわかりません。ごめんなさい。
最初の質問内容の条件(500円以上を太字)とは異なりますが、
以下のコードで解決しました。
※700円の弁当名を太字にする場合
DataGridのItemDataBoundイベントで
If e.Item.Cell(1).Text.IndexOf("700") <> -1 Then
e.Item.Cell(0).Font.Bold = True
End If
を実行させました。
まさか、自己解決できると思っていなかったので
自分でもビックリです。
ちょっとは成長しているのかな?
「この解決策ではここに問題があるよ」
と言う方がいらっしゃいましたら、ご連絡お願いします。
なんとな〜くできてしまったもので…。