Control.Calendar Datum Von - Bis?

18/10/2007 - 08:45 von Adrian Stern | Report spam
Hallo

Es wàre schön wenn ich einem Kalender ein "von" und ein "bis" Datum
mitgeben könnte, welche einen Datums-Bereich darstellen, welcher
angezeigt werden soll.

zB:
03.05.2007 - 08.06.2007

Und nur diese Daten sollen dann sichtbar und anwàhlbar sein.

Der Kalender ist scheinbar nicht für eine solche Nutzung ausgelegt und
wenn man da nichts machen kann, dann werde ich angewàhlte Daten (im
unzulàssigen Bereich) mit einem Event einfach wieder abwàhlen aber
schöner wàre es natürlich, wenn der User nur unter den "Legalen" Daten
wàhlen kann und auch nur diese zu sehen bekommt.

Die Properties sind eigendlich nur dazu da um den gerade angezeigten
Monat oà. fest zu legen.

Der Kalender soll keine Daten ausserhalb des angegebenen Datumsbereiches
enthalten.

Ich hoffe da gibt es schon einen Lösungsansatz.

mfg
Adrian Stern
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
18/10/2007 - 10:21 | Warnen spam
Hallo Adrian,

"Adrian Stern" schrieb

Es wàre schön wenn ich einem Kalender ein "von" und ein "bis" Datum mitgeben könnte, welche einen Datums-Bereich darstellen,
welcher angezeigt werden soll.

zB:
03.05.2007 - 08.06.2007

Und nur diese Daten sollen dann sichtbar und anwàhlbar sein.



Geht so AFAIK nicht. Die Standard Controls bieten Standardfunktionalitàt
und ein Datumsbereich gehört da wohl nicht dazu. (Zumindest nicht als
einfache Property, die man setzen könnte)

Auf Monatsebene kannst Du das aber relativ einfach machen. Geht sicher
auch bis auf den Tag runter, das musst Du dir aber selbst einbauen :)

...

Dim MinDate As New Date( 2007, 05, 01 )
Dim MaxDate As New Date( 2007, 06, 30 )

Protected Sub Page_Load( ... ) Handles Me.Load

<Calendar>.PrevMonthText = "<"
<Calendar>.NextMonthText = ">"

If Not Page.IsPostBack Then
<Calendar>.VisibleDate = MinDate
CheckDateRange( <Calendar>.SelectedDate )
End If

End Sub

Protected Sub <Calendar>_VisibleMonthChanged( ... ) Handles <Calendar>.VisibleMonthChanged

CheckDateRange( e.NewDate )

End Sub

Private Sub CheckDateRange( ByVal NewDate As Date )

Select NewDate
Case MinDate To MaxDate
If NewDate.Month = MinDate.Month Then
<Calendar>.PrevMonthText = ""
ElseIf NewDate.Month = MaxDate.Month Then
<Calendar>.NextMonthText = ""
End If
Case Else
If NewDate > MaxDate Then
<Calendar>.VisibleDate = MaxDate
Else
<Calendar>.VisibleDate = MinDate
End If
End Select

End Sub



Damit sind dann nur Mai und Juni 2007 auswàhlbar. Durch das Entfernen
des Texts für die Auswahl des nàchsten, bzw. vorherigen Monats fehlt
auch der Link dazu.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen