我的一个表单中有一个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
在这里不是有效的属性 - 有任何建议吗?
答案 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。