2017-03-22 15 views
0

私はをユーザーのVATレートを入力するために使用するフォームに入れています。UltraWinGridの日付セルの最小値を設定する

  • レート
  • のセル「から日」に入力された値がある場合、私はそのようグリッドを検証する必要が
  • 日から

へ日:3つの列があります。ユーザは、「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

答えて

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を使用するようにメッセージボックスを表示されることがあります。

関連する問題