トップ回答者
Reportで特定の行の背景色を変更したい

質問
-
VB2005で開発しています。
帳票を利用する必要があるため、
Report機能を利用しようと考えております。現在のプログラムは次のような形です。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
With Me.DataSet1.DataTable1
.AddDataTable1Row(1, "ああああああ", "男")
.AddDataTable1Row(2, "いいいいいい", "男")
.AddDataTable1Row(3, "うううううう", "女")
.AddDataTable1Row(2, "ええええええ", "男")
End With
Me.ReportViewer1.RefreshReport()
End Sub
End Class
参考:http://www.vbstation.net/tips/reporttable.htmこの場合の「いいいいいい」の行だけの背景色を変更するには、
何か方法がございますでしょうか?もしご存知でしたら、教えてください。
よろしくお願い致します。
回答
-
このレポート機能は使ったことがなかったのですが、(資料は見ないで)試行錯誤していたら実現方法がわかりました。
手順ですが、レポートデザイナーの明細の行の左端をクリック(TableRow2 の選択)し、プロパティの BackgroundColor に次の式(VB構文)を設定します。
=IIf(Fields!UserName.Value = "いいいいいい", "Yellow", "Transparent")
最初はコードが書けるイベントを探していたのですが、どうやらそういうものはないようで、その代わりとして、ほとんどのプロパティに対して式が設定できるようになっていました。
式はプロパティウィンドウの値入力欄に直接入力することもできますし、選択肢の中の "<式...>" を選択すれば一覧から命令を選択する形で式を構築できる画面が利用できます。
ただ、プロパティにあまり複雑な式を書いてしまうと保守性が悪くなると思いますので、なるべくデータを準備する段階で制御用の値も準備しておき(たとえば RowBackColor 列など)、プロパティへの式としては "=Fields!RowBackColor.Value" のような感じの簡単な式にしておくのも良いかもしれないと思いました。
すべての返信
-
このレポート機能は使ったことがなかったのですが、(資料は見ないで)試行錯誤していたら実現方法がわかりました。
手順ですが、レポートデザイナーの明細の行の左端をクリック(TableRow2 の選択)し、プロパティの BackgroundColor に次の式(VB構文)を設定します。
=IIf(Fields!UserName.Value = "いいいいいい", "Yellow", "Transparent")
最初はコードが書けるイベントを探していたのですが、どうやらそういうものはないようで、その代わりとして、ほとんどのプロパティに対して式が設定できるようになっていました。
式はプロパティウィンドウの値入力欄に直接入力することもできますし、選択肢の中の "<式...>" を選択すれば一覧から命令を選択する形で式を構築できる画面が利用できます。
ただ、プロパティにあまり複雑な式を書いてしまうと保守性が悪くなると思いますので、なるべくデータを準備する段階で制御用の値も準備しておき(たとえば RowBackColor 列など)、プロパティへの式としては "=Fields!RowBackColor.Value" のような感じの簡単な式にしておくのも良いかもしれないと思いました。 -
念のため補足させてください。
VB構文とはいっても、使える命令は式の編集画面の一覧にあるものだけのようですので、柔軟かどうかはわかりません。(^^;
ただしその点は、データの準備処理の段階で十分にカバーできると思います。
調査の際、私はC#の新規作成プロジェクトで確認していたのですが、試行錯誤中はVBフォーラムの話だとすっかり忘れていましたので、式で使える構文がC#ではなくVBであることを重要な話としてお伝えしないといけないと思い注釈を入れさせてもらっただけで、柔軟性を強調したつもりではありませんでした。(^^;
レポートの機能はなんとなく避けていたので、勉強になったのは私も同じです。(^^)追記:
↓「埋め込みコード」という機能があることを知りました。
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/4aab2f82-463b-4091-aa8f-c166f907cea4
なので、この補足は余分でした。。- 編集済み TH01 2010年9月22日 4:44 いまさらですが追記
-
補足説明ありがとうございます。
>VB構文とはいっても、使える命令は式の編集画面の一覧にあるものだけのようですので、柔軟かどうかはわかりません。(^^;
>ただしその点は、データの準備処理の段階で十分にカバーできると思います。
ありがとうございます。
私も検証しましたので、大体分かりましたが、
VB構文を使えることに気付いておりませんでしたので、それ以前と比べてできることが多いと感じたため、
柔軟と書かせて頂きました。
C#のプログラムでもVB構文だったのですね。
私はC#のプログラムも作りますので、この点は注意が必要ですね。
勉強になりました。