设置 UltraWinGrid 日期单元格的最小值
Setting Min Value of a Date cell of UltraWinGrid
我的其中一个表格中有一个 UltraWinGrid
供用户输入增值税税率。共有 3 列:
- 评分
- 日期从
- 截止日期
我需要验证网格,这样如果在某行的 "Date From" 单元格中输入了值,用户只能输入 "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
在这里无效 属性 - 有什么建议吗?
是的,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。
我的其中一个表格中有一个 UltraWinGrid
供用户输入增值税税率。共有 3 列:
- 评分
- 日期从
- 截止日期
我需要验证网格,这样如果在某行的 "Date From" 单元格中输入了值,用户只能输入 "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
在这里无效 属性 - 有什么建议吗?
是的,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。