设置UltraWinGrid日期单元格的最小值
问题描述:
我有一个UltraWinGrid
用于用户输入VAT费率的表单之一。有3列:设置UltraWinGrid日期单元格的最小值
- 率
- 日期从
- 日期为
我需要验证的网格,以便如果在输入“日期从”细胞值一行,用户只能输入“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。
我建议你看看IEditorDataFilter接口并创建你自己的实现这个接口的类。然后将您的类的实例设置为_Cell.Editor.DataFilter_属性。 – Steve
@Steve你是什么意思?我创建了这个类,但是在convert函数中需要什么代码来设置最小值和最大值? – Harambe