DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■34195 / inTopicNo.1)  DataGridView 行の背景色の設定
  
□投稿者/ cb400s2000 一般人(1回)-(2019/03/18(Mon) 20:12:41)
  • アイコン環境/言語:[VB.net SQLServer2008] 
    分類:[.NET] 

    こんばんは。

    visual studio 2010(VB.net) + SQLServerExpress2008を使用しております。

    DataGridViewの背景色の事での質問です。

    タイムカードのデータを表示をしております。
    DataBindをしており、土曜日、日曜日の行の背景色を
    変えたいと思っております。

    DataGridViewのCellFormattingイベントを使用してのサンプルを
    見つけて以下の通り記述をしたのですが、日付を表示している
    列にヒットしないようです。

    If dgv.Columns(e.ColumnIndex).Name = "clmDate" AndAlso _
    typeof e.value is date then

    dim intweekday as integer = weekday(e.value)

    if intweekday = 1 then
    e.cellstyle.backcolor = color.lightpink
    end if
    End if

    そもそも、使用するイベントがおかしいのでしょうか。

    アドバイスをお願いします。
マルチポストを報告
違反を報告
引用返信 削除キー/
■34196 / inTopicNo.2)  Re[1]: DataGridView 行の背景色の設定
□投稿者/ Hongliang 大御所(554回)-(2019/03/18(Mon) 21:36:07)
  • アイコン> DataGridViewのCellFormattingイベントを使用してのサンプルを
    > 見つけて以下の通り記述をしたのですが、日付を表示している
    > 列にヒットしないようです。
    とりあえず、dgv.Columns(e.ColumnIndex).Nameとかe.ValueとかをDebug.Printしてみてどんな値が入っているか確認されてみては。
    // その日付列って文字列型だったりしませんよね?

    ところで、
    ・バインドしてるデータの特定の列に日付データが入っていて、
    ・その日付の曜日が土日である行について、
    ・その行の全てのセルの背景色を変更したい、
    という要件でしょうか?
    であれば、CellFormattingイベントでは、
    1. e.RowIndexを元にDataGridView.RowsからDataGridViewRowを取得する
    2. そのDataGridViewRowのDataBoundItemでバインドしているデータの行データを取得する
     ※バインドしているのがDataTableであれば、DataBoundItemはDataRowViewになります。
    3. その行データの日付フィールドの値を見て、条件を満たした場合e.CellStyle.BackColorを変更する
    というだけで十分なはずです。
    ただし、こうした場合に、日付フィールドが変更されうるケースでは、日付フィールドを変更した時に日付セルだけ更新される(その行の他のセルは色が変わらない)ので、DataGridViewのCellEndEditイベントあたりでDataGridViewのInvalidateRowメソッドを呼び出す必要があります。

    日付データのセルだけ背景色を変えたいなら、cb400s2000さんのお書きになっているコードで良いと思います。
    あえて言うなら、曜日の判定は
    Dim dt As DateTime = CType(e.Value, DateTime)
    If dt.DayOfWeek = DayOfWeek.Sunday Then
    のようにやる方が.NET的ではあります。
違反を報告
引用返信 削除キー/
■34197 / inTopicNo.3)  Re[2]: DataGridView 行の背景色の設定
□投稿者/ cb400s2000 一般人(2回)-(2019/03/20(Wed) 12:02:32)
  • アイコンご回答ありがとうございます。

    ご提示いただいた内容がわからないことが多いので、
    調べながら修正をしてみたいと思います。

    後日、経過をご報告します。
    取り急ぎ、お礼まで。
違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -