tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataGridViewの色付け
記事No8747
投稿日: 2009/02/25(Wed) 16:08
投稿者タロ
いつもお世話になっております。
DataGridViewで特定の条件の時のみ、行に色をつけております。
立ち上げ起動時の検索1回目はうまくいくのですが、2回目以降まったく色が付きません。
ご教授、願えないでしょうか。
環境:VB2005

Form1(検索画面)
Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn1.Click
 Form2.Owner = Me
 '出力タイプを保持
 Form2.ShowDialog(sSql) ←SQL文をなげる

Form2(検索結果表示画面)

Public Overloads Sub ShowDialog(ByVal sSql As String)

    'トリガ作成時に使用する
    Dim sqlConn As SqlClient.SqlConnection

    'DB接続
    sqlConn = New SqlClient.SqlConnection(S_strSCon)
    sqlConn.Open()

    Dim sqlSelect As New SqlClient.SqlCommand(sSql, sqlConn)
    Dim Adapter As New SqlClient.SqlDataAdapter(sqlSelect)

    'データの読み込み
    Dim Table As New DataTable()
    Adapter.Fill(Table)

    'データソースを設定してDataGridViewにデータを表示
    Dim BindingSource1 As New BindingSource

    BindingSource1.DataSource = Table
    DataGridView1.DataSource = BindingSource1

    sqlConn.Close()
    sqlConn = Nothing

    Me.ShowDialog()

End Sub

Private Sub F_List_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim i As Integer

    '総行数をカウント
    For i = 0 To DataGridView1.RowCount - 1
        'セルの内容と文字列を比べる
        If DataGridView1.Rows(i).Cells(7).Value <> "" Then
            '条件を満たせば行の色を変える
            If DataGridView1.Rows(i).Cells(7).Value < Now.AddMonths(3).ToString("yyyy/MM/dd") Then
                DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Aqua
            End If
        End If
    Next

End Sub

[ツリー表示へ]
タイトルRe: DataGridViewの色付け
記事No8748
投稿日: 2009/02/25(Wed) 16:17
投稿者魔界の仮面弁士
> 立ち上げ起動時の検索1回目はうまくいくのですが、2回目以降まったく色が付きません。

データソースを変更した場合、あるいは、並び替えを行った場合には、
既定のスタイルに戻ります。

なので、データ値にあわせてスタイルを変更したい場合には、
CellFormatting イベントで e.CellStyle を操作する方が良いかと思います。

[ツリー表示へ]
タイトルRe^2: DataGridViewの色付け
記事No8750
投稿日: 2009/02/25(Wed) 17:46
投稿者タロ
魔界の仮面弁士さん、ありがとうございます。
CellFormatting イベントで e.CellStyle を操作する事で解決出来ました。

ありがとうございました。

[ツリー表示へ]