VB.NET中XtraGrid对比日期列与今日日期的功能实现求助
XtraGrid中实现过期行背景标红的解决方案
原代码的问题
- 错误地将列对象(
GridView1.Columns("DateExpired"))传入Date.Parse,实际需要的是当前行的单元格值,这会直接导致类型转换错误。 - 未处理单元格值为空或非日期格式的异常场景。
修正后的代码
Private Sub GridView1_RowCellStyle(sender As Object, e As DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs) Handles GridView1.RowCellStyle ' 获取当前行DateExpired列的单元格值 Dim cellValue As Object = GridView1.GetRowCellValue(e.RowHandle, "DateExpired") ' 校验值的有效性,避免空值或非日期类型引发错误 If cellValue IsNot DBNull.Value AndAlso TypeOf cellValue Is Date Then Dim dateExp As Date = DirectCast(cellValue, Date) ' 对比日期,过期则设置背景色为红色 If dateExp < Date.Today Then e.Appearance.BackColor = Color.Red End If End If End Sub
核心要点
- 通过
GridView.GetRowCellValue(e.RowHandle, 列名)获取当前行的实际单元格值,而非列对象。 - 加入空值和类型检查,增强代码健壮性,避免运行时异常。
- 该事件会作用于行内所有单元格,因此设置
e.Appearance.BackColor后整行都会显示红色背景。
内容的提问来源于stack exchange,提问作者DeveloperGuy
相关产品推荐
相关产品推荐

