彩票走势图

DevExpress Winforms使用技巧教程:如何更改GridControl行的颜色

原创|使用教程|编辑:龚雪|2020-04-27 09:26:21.330|阅读 501 次

概述:DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。本文主要为大家介绍如何在使用DevExpress Winforms时,如何更改GridControl行的颜色。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

下载DevExpress v19.2完整版    DevExpress v19.2汉化资源获取

DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。想要体验?点击下载>>

问题

在VB Windows Form项目上工作时,有以下代码,该代码应该为带有NextCalibrationDate <= to today's date(在这种情况下只有两行)的行提供红色背景色,但是此效果没有实现。当调试应用程序时,代码似乎可以正常工作,但是两行的颜色并未更改为红色,目前想知道是否是因为在单元格中设置日期方式的问题。

Private Sub GridView1_RowStyle(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs) Handles GridView1.RowStyle
Dim nextCalibDate As Date
Dim I As Integer
Dim DataRowCount As Integer = GridView1.DataRowCount
Dim View As GridView = sender
For I = 0 To DataRowCount - 1
If IsDBNull(GridView1.GetRowCellValue(e.RowHandle, colNextCalibrationDt)) Then
'Nothing
Else
nextCalibDate = GridView1.GetRowCellValue(e.RowHandle, colNextCalibrationDt)
If nextCalibDate <= Today.Date Then
If (e.RowHandle >= 0) Then
e.Appearance.BackColor = Color.Red
End If
End If
End If
Next
End Sub

仅供参考,这是用来设置NextCalibrationDate的代码:

Dim DataRowCount As Integer = GridView1.DataRowCount
DataRowCount -= 1
Dim DateCalibrated As Date = GridView1.GetRowCellValue(DataRowCount, colDateCalibrated)
Dim NextCalibrationDt As String
'Set NextCalibrationDt
Select Case CalibInterval
Case "D"
NextCalibrationDt = DateAdd(DateInterval.Day, 1, DateCalibrated)
Case "W"
NextCalibrationDt = DateAdd(DateInterval.Day, 7, DateCalibrated)
Case "M"
NextCalibrationDt = DateAdd(DateInterval.Month, 1, DateCalibrated)
Case "6mos"
NextCalibrationDt = DateAdd(DateInterval.Month, 6, DateCalibrated)
Case "Y"
NextCalibrationDt = DateAdd(DateInterval.Year, 1, DateCalibrated)
Case "B"
NextCalibrationDt = DateAdd(DateInterval.Year, 2, DateCalibrated)
Case "36mos"
NextCalibrationDt = DateAdd(DateInterval.Year, 3, DateCalibrated)
Case "N"
NextCalibrationDt = "NULL"
Case "Calibration Not Required"
NextCalibrationDt = "NULL"
Case Else
NextCalibrationDt = "NULL"
End Select
If NextCalibrationDt <> "NULL" Then
NextCalibrationDt = "'" & NextCalibrationDt & "'"
End If
Dim sqlString As String = "UPDATE [ToolingCalibration].[dbo].[tblToolCalibration] SET LastCalibrationDt = '" & DateCalibrated & "', NextCalibrationDt = " & NextCalibrationDt & " where RecordID = '" & ToolIdToEdit & "'"
Dim toolCmd As New SqlCommand(sqlString, connCalibrationRecord)
toolCmd.Connection.Open()
toolCmd.ExecuteNonQuery()
toolCmd.Connection.Close()

DevExpress Winforms使用技巧教程
DevExpress Winforms使用技巧教程
解决办法:

为确保满足条件,请在更改e.Appearance.BackColor属性的行中插入一个断点。在特定情况下,RowStyle事件提供的外观设置的优先级低于其他外观设置。启用e.HighPriority选项确保外观设置的最高优先级。此外,由于每个可见行都会引发RowStyle事件,因此您无需循环执行代码。

在代码结尾处设置e.HighPriority = True也可以解决此问题,并且不依赖循环。

Private Sub GridView1_RowStyle(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs) Handles GridView1.RowStyle
Dim nextCalibDate As Date
Dim I As Integer
Dim View As GridView = sender
If IsDBNull(GridView1.GetRowCellValue(e.RowHandle, colNextCalibrationDt)) Then
'Nothing
Else
nextCalibDate = GridView1.GetRowCellValue(e.RowHandle, colNextCalibrationDt)
If nextCalibDate <= Today.Date Then
If (e.RowHandle >= 0) Then
e.Appearance.BackColor = Color.Red
End If
e.HighPriority = True 'override any other formatting
End If
End If
End Sub


DevExpress Dashboard控件实操公开课4月即将开启,

DevExpress技术交流群:775869749      欢迎一起进群讨论

扫描关注DevExpress中文网微信公众号,及时获取最新动态及最新资讯

DevExpress中文网微信

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP