设置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这里不是有效的属性 - 有什么建议?

+0

我建议你看看IEditorDataFilter接口并创建你自己的实现这个接口的类。然后将您的类的实例设置为_Cell.Editor.DataFilter_属性。 – Steve

+0

@Steve你是什么意思?我创建了这个类,但是在convert函数中需要什么代码来设置最小值和最大值? – Harambe

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