You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:53:15