Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel Webserversteuerelemente
  gp 8.1 Webserversteuerelemente formatieren
    gp 8.1.1 Die FontInfo-Klasse
    gp 8.1.2 Die System.Drawing.Color-Struktur
    gp 8.1.3 Die Klasse Unit und die Enumeration UnitType
  gp 8.2 Button
    gp 8.2.1 OnClick
    gp 8.2.2 OnCommand
  gp 8.3 LinkButton
  gp 8.4 ImageButton
  gp 8.5 HyperLink
  gp 8.6 Label
  gp 8.7 Literal
  gp 8.8 Panel
  gp 8.9 TextBox
    gp 8.9.1 Mit JavaScript den Fokus setzen
  gp 8.10 CheckBox
  gp 8.11 Image
  gp 8.12 Webserversteuerelemente für Tabellen
  gp 8.13 RadioButton
  gp 8.14 Calendar
  gp 8.15 AdRotator
  gp 8.16 E-Mails versenden
    gp 8.16.1 Versand von E-Mails mit der Klasse SmtpMail
    gp 8.16.2 E-Mails mit der Klasse MailMessage erstellen


Galileo Computing

8.14 Calendar  toptop


Klasse System.Web.UI.WebControls.Calendar
Deklaration <asp:Calendar id="Calendar1"
CellPadding="pixels"
CellSpacing="pixels"
DayNameFormat=
"FirstLetter|FirstTwoLetters|Full|Short"
FirstDayOfWeek="Default|Monday|Tuesday|Wednesday|
Thursday|Friday|Saturday|Sunday"
NextMonthText="HTML text"
NextPrevFormat="ShortMonth|FullMonth|CustomText"
PrevMonthText="HTML text"
SelectedDate="date"
SelectionMode="None|Day|DayWeek|DayWeekMonth"
SelectMonthText="HTML text"
SelectWeekText="HTML text"
ShowDayHeader="True|False"
ShowGridLines="True|False"
ShowNextPrevMonth="True|False"
ShowTitle="True|False"
TitleFormat="Month|MonthYear"
TodaysDate="date"
VisibleDate="date"
OnDayRender="OnDayRender-Methode"
OnSelectionChanged="OnSelectionChanged-Methode"
OnVisibleMonthChanged=
"OnVisibleMonthChanged-Methode"
runat="server" >

<TodayDayStyle property="value"/>
<DayHeaderStyle property="value"/>
<DayStyle property="value"/>
<NextPrevStyle property="value"/>
<OtherMonthDayStyle property="value"/>
<SelectedDayStyle property="value"/>
<SelectorStyle property="value"/>
<TitleStyle property="value"/>
<TodayDayStyle property="value"/>
<WeekendDayStyle property="value"/>
</asp:Calendar>
Erzeugter HTML-Code Umfangreiche Tabelle
Kurzcharakteristik Das Calendar-Steuerelement erstellt einen Monatskalender. Der Anwender kann zum vorhergehenden und zum folgenden Monat wechseln und einen Tag selektieren.

Das Calendar-Steuerelement zeigt ein Kalenderblatt im Monatsformat. Der Anwender kann in den vorhergehenden oder in den folgenden Monat wechseln und einen Tag anklicken. Im Programmcode können Sie den angeklickten Datumswert weiterverarbeiten.


Achtung   Das Calendar-Steuerelement allein bietet aber noch keine Möglichkeit, irgendwelche Einträge hinter einem Datum zu hinterlegen. Es geht tatsächlich nur darum, einen Datumswert zu selektieren. Alles andere müssen Sie selbst entwickeln.

webserver_calendar01.aspx demonstriert, dass das Calendar-Steuerelement bereits in seiner einfachsten Form ein komplettes Kalenderblatt anzeigt (siehe Abbildung 8.9).

<!-- webserver_calendar01.aspx -->
<%@ Page Language="VB" debug="True" Strict="True" %>
<html><head>
<title>Webserversteuerelemente: Calendar</title>
</head><body>
<h3>Calendar</h3>
<form runat="server" id="myForm">
<asp:Calendar runat="server" >
</asp:Calendar>
</form></body></html>

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 8.9 Eine Zeile Code genügt, um diesen Kalender zu erstellen.

Die zahlreichen Attribute und die untergeordneten Elemente, über die das Calendar-Steuerelement verfügt, dienen vorwiegend dem Zweck, die Darstellung des Kalenders zu modifizieren. Farben und Formen des Kalenders können Sie beliebig ändern. Verschiedene Bereiche wie den Titel oder die Leiste mit den Wochentagen können Sie auf Wunsch auch ausblenden.

Mit Ihrem Code können Sie auf drei Ereignisse reagieren.

gp  DayRender tritt ein, wenn eine Zelle mit einem Datum erstellt wird. Wenn Sie auf dieses Ereignis reagieren, können Sie den Inhalt der Tabellenzelle beeinflussen und hier zum Beispiel einen zusätzlichen Text hineinschreiben oder eine Grafik einbauen. An dieser Stelle im Code könnten Sie beispielsweise eine Datenbank nach Terminen abfragen.
gp  SelectionChanged tritt ein, wenn der Anwender ein Datum selektiert.
gp  VisibleMonthChanged tritt ein, wenn der Anwender zu einem anderen Monat weiterblättert.

webserver_calendar02.aspx enthält einen individuell gestalteten Kalender, der auf die Ereignisse SelectionChanged und DayRender reagiert (siehe Abbildung 8.10).

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 8.10 Mit zahlreichen Attributen und Ereignissen können Sie Ihren Kalender individuell gestalten.

<!-- webserver_calendar02.aspx -->
<%@ Page Language="VB" debug="True" Strict="True" %>
<script runat="server" >
Public Sub tagesauswahl (ByVal sender As Object, _
                    ByVal e As EventArgs)
  ausgabe.innerText = "Ihr Terminwunsch: " _
                      & meinKalender.SelectedDate                    
End Sub

Public Sub tagesinhalt (ByVal sender As Object, _
                        ByVal e As DayRenderEventArgs)
   If e.Day.Date = #04/01/4004# Then
      e.Cell.Controls.Add
          (New LiteralControl("<br>Hochzeitstag!!!"))
   End If                    
End Sub                    
</script>
<html><head>
<title>Webserversteuerelemente: Calendar</title>
</head><body>
<h3>Calendar</h3>
<form runat="server" id="myForm">
<asp:Calendar id="meinKalender"
     CellPadding="5"
     CellSpacing="0"
     DayNameFormat="Full"
     FirstDayOfWeek="Monday"
     NextPrevFormat="FullMonth"
     SelectionMode="Day"
     ShowDayHeader="True"
     ShowGridLines="True"
     ShowNextPrevMonth="True"
     ShowTitle="True"
     TitleFormat="MonthYear"
     VisibleDate="04.04.4004"
     OnSelectionChanged="tagesauswahl"
     OnDayRender="tagesinhalt"
     runat="server" >
   <DayStyle ForeColor="white"
             BackColor="blue" />
   <WeekendDayStyle ForeColor="white"
                    BackColor="red" />
   <TitleStyle ForeColor="black"
               BackColor="white" 
               Font-Bold="true" />
   <DayHeaderStyle Font-Italic="true" />                   
   <SelectedDayStyle ForeColor="black"
                     BackColor="yellow" />
</asp:Calendar>
<p id="ausgabe" runat="server" />
</form></body></html>

Mit dem Attribut VisibleDate legen Sie fest, welcher Monat angezeigt wird. Mit VisibleDate="04.04.4004" wird also der April im Jahr 4004 angezeigt. Anscheinend verkraftet .NET die kommenden Jahrtausendwechsel ohne Probleme.

Das Attribut OnSelectionChanged="tagesauswahl" legt fest, dass die Prozedur tagesauswahl ausgeführt wird, wenn der Anwender ein Datum anklickt. Die Prozedur schreibt einen Terminwunsch unter den Kalender.

Das Attribut OnDayRender="tagesinhalt" legt fest, dass beim Erstellen der einzelnen Datumszellen die Prozedur tagesinhalt ausgeführt wird. Der Code in dieser Prozedur sorgt dafür, dass beim 1.4.4004 der Hinweis auf den Hochzeitstag eingefügt wird.

Die Ereignisprozedur tagesinhalt benötigt in ihrer Signatur ein spezielles Objekt vom Typ DayRenderEventArgs:

Public Sub tagesinhalt (ByVal sender As Object, _
                        ByVal e As DayRenderEventArgs)

Das DayRenderEventArgs-Objekt bietet über seine Eigenschaft Cell den Zugriff auf das TableCell-Objekt, das momentan bearbeitet wird. Ein TableCell-Objekt verfügt über eine Controls-Auflistung, an die Sie beispielsweise eigene Steuerelemente anfügen können. So verfährt auch der Code von tagesinhalt:

e.Cell.Controls.Add 
            (New LiteralControl("<br>Hochzeitstag!!!"))

Hier wird reiner Text eingefügt, der in ASP.NET durch ein Objekt vom Typ LiteralControl repräsentiert wird.

  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de