2017-03-22 6 views
0

사용자가 VAT 비율을 입력하는 데 사용하는 양식 중 하나에 UltraWinGrid이 있습니다. 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

@ 스티브 당신은 어떻게 의미합니까? 클래스를 만들었지 만 변환 함수에서 Min 및 Max 값을 설정하는 데 필요한 코드는 무엇입니까? – Harambe

답변

1

예, MinValue 및 MaxValue는 UltraGridColumn에 의해서만 노출됩니다. 그러나 이것은 귀하의 경우에는 작동하지 않습니다. 할 수있는 일은 BeforeCellUpdate 이벤트를 처리하는 것입니다. 이 이벤트에서 셀 사용자가 업데이트를 시도하는지 확인하려면 DateTo 셀과 DateTo 셀에 값이 있어야합니다. 그래서 당신은 다음과 같이 true로 e.Cancel를 설정하여 새로운 가치를 받아들이는 억제 할 수있는 경우 :

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을 사용하는 메시지 상자가 표시 될 수 있습니다.