设置 UltraWinGrid 的日期单元格的最小值



我的一个表单中有一个UltraWinGrid,供用户输入增值税税率。有 3 列:

  • 日期从
  • 日期至

我需要验证网格,以便在行的"日期开始"单元格中输入值,则用户只能输入"日期开始"值 + 1 天的最小值。

这将以哪种方法进行?我该怎么做?

我试过做

Private Sub ugVatRates_BeforeCellActivate(sender As Object, e As CancelableCellEventArgs) Handles ugVatRates.BeforeCellActivate
 Dim dateFrom As Date
 If IsDBNull(e.Cell.Row.Cells("DateFrom").Value) = False OrElse e.Cell.Row.Cells("DateFrom").Value <> Nothing Then
   dateFrom = e.Cell.Row.Cells("DateFrom").Value
   e.Cell.Row.Cells("DateTo").MinValue = dateFrom.AddDays(1)
End If
End Sub

但是,MinValue在这里不是一个有效的属性 - 有什么建议吗?

是的,MinValue 和 MaxValue 仅由 UltraGridColumn 公开。但是,这在您的情况下不起作用。您可以做的是处理BeforeCellUpdate事件。在这种情况下,检查单元格用户是否尝试更新是 DateTo 单元格以及 DateFrom 是否有值。如果是这样,您可以通过将 e.Cancel 设置为 true 来禁止接受新值,如下所示:

    Private Sub ugVatRates_BeforeCellActivate(sender As Object, e As Infragistics.Win.UltraWinGrid.BeforeCellUpdateEventArgs) Handles ugVatRates.BeforeCellUpdate
    If e.Cell.Column.Header.Caption = "DateTo" Then
        Dim dateFrom As Date
        Dim dateTo As Date
        If IsDBNull(e.Cell.Row.Cells("DateFrom").Value) = False OrElse e.Cell.Row.Cells("DateFrom").Value <> Nothing Then
            dateFrom = e.Cell.Row.Cells("DateFrom").Value
            dateTo = Date.Parse(e.Cell.Row.Cells("DateTo").Text)
            If dateTo < dateFrom.AddDays(1) Then
                ' Suppress accepting of new value 
                e.Cancel = True
            End If
        End If
    End If
End Sub

当用户输入无效日期时,您可以显示一个消息框来通知他,或使用UltraGrid的数据验证。

最新更新