2017-03-22 1 views
0

J'ai un UltraWinGrid dans l'un de mes formulaires qui permet à l'utilisateur d'entrer des taux de TVA. Il y a 3 colonnes:Définition de la valeur minimale d'une cellule Date de UltraWinGrid

  • Taux
  • Date à partir de
  • Jusqu'à la date

Je dois valider la grille de sorte que s'il y a une valeur entrée dans la « date de » cellule une ligne, l'utilisateur ne peut entrer qu'une valeur minimale de la valeur "Date From" + 1 jour.

Dans quel procédé cela irait-il? Et comment puis-je le faire?

J'ai essayé de faire

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 

Cependant, MinValue n'est pas une propriété valide ici - Un conseil?

+0

Je vous suggère de regarder l'interface IEditorDataFilter et de créer votre propre classe qui implémente cette interface. Définissez ensuite une instance de votre classe sur la propriété _Cell.Editor.DataFilter_. – Steve

+0

@Steve comment voulez-vous dire? J'ai créé la classe, mais de quel code ai-je besoin dans la fonction de conversion pour définir une valeur Min et Max? – Harambe

Répondre

1

Oui, MinValue et MaxValue sont uniquement exposées par UltraGridColumn. Cependant, cela ne fonctionnera pas dans votre cas. Ce que vous pouvez faire est de gérer l'événement BeforeCellUpdate. Dans ce cas, vérifiez si l'utilisateur de la cellule essaie de mettre à jour la cellule DateTo ainsi que la valeur de DateFrom. Si oui, vous pouvez supprimer l'acceptation de la nouvelle valeur en mettant e.Cancel à true comme ceci:

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 

Lorsque l'utilisateur entre la date invalide Vous pouvez afficher une boîte de message pour l'informer, ou utiliser Data Validation de UltraGrid.