设置UltraWinGrid的Date单元格的最小值

时间:2017-03-22 10:48:48

标签: vb.net validation date infragistics ultragrid

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

  • 日期自
  • 日期

我需要验证网格,以便在"日期来自"中输入值。一行的单元格,用户只能输入" Date From"的最小值。价值+ 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在这里不是有效的属性 - 有任何建议吗?

1 个答案:

答案 0 :(得分:1)

是的,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的Data Validation