- ベストアンサー
ACCESSのフォームで[条件付き書式]をVB2005のGridView内で出来ないでしょうか
VB2005が超初心者ですがよろしくお願いいたします。 ACCESSのフォームで[条件付き書式] みたいな事をVB2005のGridView内で 条件の値に等しいレコードの 特定セルの色だけを変えたいのですが・・・ よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
実際にコーディングして確認してみました 下記オブジェクトの指定を間違えていました ×drv.DefaultCellStyle ↓ ○dgvr.DefaultCellStyle >特定セルの色だけを変えたいのですが・・・ あとこの事を見落としていました #1は行のセルスタイルを変更します 1セルスタイルを変更するには下記のようにします [例] If e.RowIndex > -1 AndAlso e.ColumnIndex > -1 Then Dim dgv As System.Windows.Forms.DataGridView = DirectCast(sender, System.Windows.Forms.DataGridView) Dim dgvr As System.Windows.Forms.DataGridViewRow = dgv.Rows(e.RowIndex) Dim dgvc As System.Windows.Forms.DataGridViewCell = dgvr.Cells(e.ColumnIndex) Dim drv As System.Data.DataRowView = DirectCast(dgvr.DataBoundItem, System.Data.DataRowView) If drv IsNot Nothing AndAlso (なにやら条件文) Then dgvc.Style.BackColor = System.Drawing.Color.Red dgvc.Style.ForeColor = System.Drawing.Color.White Else dgvc.Style.BackColor = System.Drawing.Color.White dgvc.Style.ForeColor = System.Drawing.Color.Black End If End If ※(なにやら条件文)のサンプル CType(drv(e.ColumnIndex), System.String) = "ほげほげ"
その他の回答 (2)
- AlexSuns
- ベストアンサー率67% (78/115)
年齢フィールドが数値型ならば、 CType(drv("年齢"), System.Integer) = 35 文字列型ならば、 CType(drv("年齢"), System.String) = "35" ・・・ですが、年齢フィールドがNull(DB使用時の場合DBNull)の場合を考慮すると If drv IsNot Nothing _ AndAlso Not IsDBNull(drv("年齢")) _ AndAlso Not String.IsNullOrEmpty(drv("年齢")) _ AndAlso CType(drv("年齢"), System.String) = "35" Then 適宜、条件文を設定してください
お礼
ありがとう御座います。 完璧に完成です。 何から何まで本当に ありがとう御座いました。
- AlexSuns
- ベストアンサー率67% (78/115)
>ACCESSのフォームで[条件付き書式] >みたいな事をVB2005のGridView内で 可能です DataGridViewのCellFormattingイベントにて行います [例] Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvDataArea.CellFormatting If e.RowIndex > -1 Then Dim dgv As System.Windows.Forms.DataGridView = DirectCast(sender, System.Windows.Forms.DataGridView) Dim dgvr As DataGridViewRow = dgv.Rows(e.RowIndex) Dim drv As System.Data.DataRowView = DirectCast(dgvr.DataBoundItem, System.Data.DataRowView) If (なにやら条件文) Then drv.DefaultCellStyle.BackColor = System.Drawing.Color.Red drv.DefaultCellStyle.ForeColor = System.Drawing.Color.White Else drv.DefaultCellStyle.BackColor = System.Drawing.Color.White drv.DefaultCellStyle.ForeColor = System.Drawing.Color.Black End If End If End Sub まぁ重いですよ 使用するには、少々工夫が必要です
補足
ありがとう御座います。 何分ド素人ですので、ご迷惑をおかけしますが 下記の回避方法をお願いいたします。 drv.DefaultCellStyleでエラーになります。 ([System.Data.DataRowView]はメンバではありません。)です。 よろしくお願いいたします。
補足
お世話になります。 出来ました。ありがとう御座います。 申し訳ございませんが あと少しだけお願いします。 【なにやら条件文】ですが ([年齢]の列に35歳に等しい)の式が出来ません。 いろいろ試しましたが・・・ お手数をおかけしますが よろしくお願いいたします。