2009-05-26 2 views
0

質問#1のDateTimePickerコントロール:私は現在、構築された亜音速2.1 491 を使用している最新の作業バージョン亜音速およびWindowsフォーム

以降のビルドはありますか?どこで入手できますか? 私は2.2がリリースされたことを知っていますが、セットアップに付属していないと私はそれを使用するApp.Config/Web.Configを変更する方法を知りません。

質問#2:WindowsフォームのdateTimePickerコントロールに関する問題。

System.FormatException私はデータを取得しようとしています。SubSonicからそのコントロールにアクセスするか、そのコントロールからSubSonicを介してデータベースにデータを保存してください。

たとえば、Timeのみを保存する場合は、.Textプロパティを使用できます。 Dateを保存するには、コントロールの.Valueプロパティを使用する必要があります。

Convert.ToDateTime(dateTimePicker.Value.ToString())などのすべての種類の変換を試しましたが、例外をスローしない一貫したパターンは見つかりません。これに関する助けがあれば大いに感謝します。

+0

こんにちは、質問の件名を編集してより具体的にしてください。 – Rahul

答えて

0

再質問1 - あなたはひょっとしMSSQL2008の新しいデータ型を使用している - 私は任意のapp.configを/ web.configファイルの変更はSS2.1と質問2については2.2

との間に必要とされるとは思いません?もしそうなら、SS2.2はまだ適切に処理していないようです。

0

あなたの投稿にちょうどつまずいた。 FormatExceptionであるかどうかわかりませんが、データバインドされたDateTimePickerで例外が発生しています。

問題は、次いで、#12より前の#1/1/1753#以降DateTime値を返すのDataGridViewのプロパティをバインドする場合

DateTimePicker.MinimumDateTime = #1/1/1753# 

だから

DateTime.MinValue = #1/1/0001# 
New DateTime = #1/1#0001# 

ながら/ 31/9998#(DateTimePicker.MaximumDateTime)例外が発生します。

私はあなただけ値プロパティに、あなたのサブソニックオブジェクトをバインドすることができ、それを使用するには(申し訳ありませんが、それは、VBで書かれています)私自身の継承のDateTimePickerでこれを解決し

。しかし、ShowCheckBoxプロパティをtrueに設定し、bool値をDBに保持されているCheckedValueプロパティ(日付が設定されていることを示す)にバインドする必要があります。

Now空の日付が返された場合、日付はNowに、checkedValueはfalseに設定され、無効なDateTimePickerにつながります。 チェックボックスをオンにするか、カレンダーで日付を選択すると、チェックボックスがtrueに設定され、チェックボックスがオンになっています。

注意:Checkedプロパティを直接バインドしたり、CheckedValueプロパティをバインドしたりしないでください。

Imports System.ComponentModel 

Public Class MyDateTimePicker 
    Inherits System.Windows.Forms.DateTimePicker 

    <Bindable(True)> _ 
    Public Overloads Property Value() As DateTime 
     Get 
      If Not MyBase.Checked And (MyBase.Value < DateTimePicker.MinimumDateTime Or MyBase.Value > DateTimePicker.MaximumDateTime) Then 
       Return DateTime.Now 
      Else 
       Return MyBase.Value 
      End If 
     End Get 
     Set(ByVal value As DateTime) 

      If ((value < DateTimePicker.MinimumDateTime Or value > DateTimePicker.MaximumDateTime) Or value = #1/1/1900#) Then 
       MyBase.Value = DateTime.Now 
       MyBase.Checked = False 
      Else 
       MyBase.Value = value 
      End If 

     End Set 
    End Property 

    Private _CheckedValue As Boolean 

    <Bindable(True)> _ 
    Public Property CheckedValue() As Boolean 
     Get 
      Return _CheckedValue 
     End Get 
     Set(ByVal value As Boolean) 
      _CheckedValue = value 
     End Set 
    End Property 

    Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs) 
     MyBase.OnMouseUp(e) 

     RefreshCheckedValue() 
    End Sub 

    Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs) 
     MyBase.OnKeyDown(e) 

     RefreshCheckedValue() 
    End Sub 

    Private Sub RefreshCheckedValue() 

     CheckedValue = Me.Checked 

     If Not Me.DataBindings("CheckedValue") Is Nothing Then 
      Me.DataBindings("CheckedValue").WriteValue() 
     End If 

    End Sub 

    Protected Overrides Sub OnBindingContextChanged(ByVal e As System.EventArgs) 
     MyBase.OnBindingContextChanged(e) 

     Static checkedInitialized As Boolean 
     If Not checkedInitialized AndAlso Not Me.DataBindings("CheckedValue") Is Nothing Then 
      Me.Checked = Me.CheckedValue 
      checkedInitialized = True 
     End If 

    End Sub 

End Class