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

Kapitel 8 Webserversteuerelemente

Webserversteuerelemente generieren HTML- und JavaScript-Code. Den Entwickler entlasten sie von den Details der Umsetzung. Der erzeugte Code funktioniert in allen gängigen Browsern.

HTML-Serversteuerelemente gehen vom HTML-Code aus und bieten für jedes HTML-Element eine eigene ASP.NET-Klasse. Webserversteuerelemente gehen den umgekehrten Weg. Sie gehen von einer allgemeinen Funktionalität aus, etwa der Funktionalität eines Eingabefelds, und generieren den dafür erforderlichen HTML-Quellcode. Je nach den gewählten Optionen können dabei unterschiedliche HTML-Elemente erzeugt werden, etwa input type="text"- oder textarea-Elemente. Wer Webserversteuerelemente einsetzt, benutzt ASP.NET als HTML-Codegenerator.

Auch Webserversteuerelemente müssen stets innerhalb eines form-Elements platziert sein:

<form runat="server" >
.... Webserversteuerelemente u. a. ...
</form>

Einerseits gibt es relativ einfache Webserversteuerelemente wie etwa den Button. Dieser generiert stets ein input type="submit"- oder input type="button"-Element, je nachdem, welche Optionen der Entwickler gewählt hat. Auf der anderen Seite gibt es sehr komplexe Webserversteuerelemente wie etwa das Calendar-Element, das nicht ein einzelnes HTML-Element, sondern seitenweise HTML- und JavaScript-Code generiert.

Ob der erzeugte HTML-Code browserunabhängig ist oder nicht, hängt im Wesentlichen vom Entwickler ab. Ein Entwickler kann stets auch solche Attribute verwenden, die nur vom Internet Explorer ab der Version 4.0 interpretiert werden. Er muss es aber nicht.

Auch bei der Entwicklung mit ASP.NET gilt der Grundsatz, dass Webanwendungen möglichst mit mehreren Browsern getestet werden sollten. Bei eigenen Tests hat sich aber gezeigt, dass etwa der Netscape-Browser mit dem generierten Code gut zurechtkommt.


Achtung   Das größere Problem besteht eher darin, dass manche Webserversteuerelemente auf aktiviertes JavaScript angewiesen sind, weil sie sonst nicht funktionieren. Bei der Entwicklung einer konkreten Webanwendung steht daher die Grundsatzentscheidung an, ob man nur solche Browser unterstützen will, die JavaScript aktiviert haben, oder ob man auch Browser mit deaktiviertem JavaScript unterstützen will. Business-Websites werden die Anforderungen an die Browser stets möglichst gering halten, um nicht unnötig Besucher zu vergraulen. Insbesondere die Navigation durch eine Website sollte nicht von JavaScript abhängig gemacht werden, da man sonst etwa zehn Prozent aller Besucher von vornherein ausschließt.

In den folgenden Erläuterungen wird jeweils ausdrücklich darauf hingewiesen, wenn ein Webserversteuerelement nur mit aktiviertem JavaScript funktioniert.

Im Quellcode einer aspx-Seite erscheinen Webserversteuerelemente stets mit dem Präfix asp:, z. B.

<asp:Label runat="server">Hier steht etwas </asp:Label>

Auch Webserversteuerelemente müssen stets über das Attribut runat="server" verfügen.

Auf den folgenden Seiten werden alle Webserversteuerelemente vorgestellt. Zu jedem Webserversteuerelement gibt es zunächst eine Art Steckbrief in tabellarischer Form, der wesentliche Informationen übersichtlich zusammenfasst. Dazu gehören

gp  der Klassenname,
gp  die Deklaration des Steuerelements,
gp  der erzeugte HTML-Code und
gp  eine Kurzcharakteristik.

Im Anschluss an den Steckbrief wird anhand von Beispielen die konkrete Verwendung erläutert.


Galileo Computing

8.1 Webserversteuerelemente formatieren  downtop

Alle Webserversteuerelemente, die von der Klasse System.Web.UI.WebControls.WebControl abgeleitet sind – und das sind die meisten –, haben eine Reihe von Eigenschaften gemeinsam. Diese gemeinsamen Eigenschaften betreffen hauptsächlich Angaben zur Formatierung wie die verwendete Schriftart, Größe, Breite usw. Tabelle 8.1 nennt diese gemeinsamen Eigenschaften, die jeweils als Attribut im Quellcode gesetzt werden können.


Attribut Beschreibung
AccessKey Tastenkombination über die Alt-Taste. Funktioniert aber nur im Internet Explorer ab Version 4.0
Attributes Diese Eigenschaft kann aus dem Programmcode heraus verwendet werden, um zusätzliche Attribute abzufragen, die der Entwickler individuell den Webserversteuerelementen gegeben hat.
BackColor Hintergrundfarbe, z. B. BackColor="black" oder BackColor="#0033FF"
BorderColor Rahmenfarbe
BorderWidth Rahmenstärke in Pixel, falls ein Rahmen vorhanden ist. Funktioniert nicht bei allen Webserversteuerelementen und nicht bei allen Browsern.
BorderStyle Rahmenformat, soweit zutreffend. Mögliche Werte: NotSet, None, Dotted, Dashed, Solid, Double, Groove, Ridge, Inset, Outset
CssClass Zugehörige CSS-Klasse
Style CSS-Attribute. Wenn es eigene Attribute gibt, wie etwa BackColor, werden jedoch diese Angaben verwendet.
Enabled Bei False wird das Steuerelement ausgeblendet.
EnableViewState True, wenn das Steuerelement seinen Anzeigestatus behalten soll.
Font Schriftart. Hier gibt es eine Reihe von Untereigenschaften, die über die FontInfo-Klasse definiert werden: Font-Bold, Font-Italic, Font-Name, Font-Names, Font-Overline, Font-Size, Font-Strikeout, Font-Underline.
ForeColor Vordergrundfarbe. Wird ab IE 4.0 unterstützt, steht aber nicht bei allen Steuerelementen zur Verfügung
Height Fixe Höhe
TabIndex Position des Steuerelements in der Aktivierreihenfolge. Ab IE 4.0
ToolTip Text, der angezeigt wird, wenn der Mauszeiger auf das Steuerelement zeigt. Wird nicht von allen Browsern unterstützt
Width Fixe Breite

Tabelle 8.1 Gemeinsame Eigenschaften der Webserversteuerelemente

Wenn Sie die Formatierungsmöglichkeiten testen, wird sich schnell die Frage einstellen, wie das Aussehen eines Objekts programmgesteuert beeinflusst werden kann. Das Verfahren erschließt sich oft nicht auf Anhieb, weil sich die Art der Deklaration im HTML-Code nicht mit der Verwendung im VB.NET-Code deckt. Einige Beispiele sollen verdeutlichen, was damit gemeint ist. Die Seite webserver_formatierung01.aspx zeigt eine OK-Schaltfläche an. Wenn man auf die Schaltfläche klickt, verändert sie ihr Aussehen (siehe Abbildung 8.1).

<!-- webserver_formatierung01.aspx -->
<%@ Page Language="VB" Debug="True" Strict="True" %>
<script runat="server">
Sub btnOK_Click (Sender As Object, E As EventArgs)
   If btnOK.Font.Bold = True Then
      btnOK.Font.Bold = false
      btnOK.ForeColor = System.Drawing.Color.Blue
      btnOK.BackColor = _
            System.Drawing.Color.FromArgb(255,192,102)
      btnOK.BorderWidth = New Unit(20, UnitType.Pixel)
   Else
      btnOK.Font.Bold = true
      btnOK.ForeColor = System.Drawing.Color.White
      btnOK.BackColor = System.Drawing.Color.Black
      btnOK.BorderWidth = New Unit(5, UnitType.Pixel)
   End If
End Sub
</script>
<html><head>
<title>Webserversteuerelemente: Button</title>
</head><body>
<form runat="server" id ="myForm">
<asp:Button id="btnOK"
            Text=" OK "
            runat="server"  
            OnClick="btnOK_Click"
            Font-Bold="true" 
            ForeColor="white"
            BackColor="#00AA00"
            BorderWidth="5"
            BorderColor="red"/>
</form >
</body></html>

Im folgenden Abschnitt über das Button-Steuerelement wird die Funktionsweise einer Schaltfläche näher erläutert. Hier soll es zunächst nur um die grafische Gestaltung gehen.


Galileo Computing

8.1.1 Die FontInfo-Klasse  downtop

Die Eigenschaften der verwendeten Schrift stehen innerhalb der Deklaration über diverse Font-...-Eigenschaften zur Verfügung. Die aspx-Seite setzt beispielsweise die Eigenschaft Font-Bold="true". Diese Eigenschaft wird auch in der Ereignisprozedur btnOK_Click beeinflusst. Hier lautet der Code:

btnOK.Font.Bold = true

Es heißt also nicht btnOK.Font-Bold = true, weil es eine Eigenschaft Font-Bold gar nicht gibt. Stattdessen liefert die Eigenschaft Font des Button-Steuerelements ein Objekt vom Typ FontInfo. Die Klasse FontInfo verfügt über eine Reihe von Eigenschaften, mit denen sich die typischen Auszeichnungen für die Schriftformatierungen vornehmen lassen, darunter auch die Eigenschaft Bold. So kommt es zu der Formulierung btnOK.Font.Bold.


Galileo Computing

8.1.2 Die System.Drawing.Color-Struktur  downtop

Andere Attribute des Button-Steuerelements stehen direkt als Eigenschaft dieses Steuerelements zur Verfügung. Dazu zählt beispielsweise ForeColor. Die Deklaration verwendet beispielsweise die Zuweisung ForeColor="white". Die Prozedur btnOK_Click() setzt ebenfalls die Vordergrundfarbe, etwa in dieser Zeile:

btnOK.ForeColor = System.Drawing.Color.Blue

Das Button-Steuerelement kennt die Eigenschaft ForeColor und diese ist vom Typ Color, genauer gesagt: System.Drawing.Color. Dabei handelt es sich um eine Struktur (keine echte Klasse, sondern eine Struktur), die die Definition von Farben über zahlreiche Eigenschaften und Methoden ermöglicht. Viele Farben sind direkt als Eigenschaft definiert. Das beginnt bei AliceBlue und endet mit YellowGreen. Der Beispielcode ruft eine solche vordefinierte Farbe mit System.Drawing.Color.Blue ab.


Achtung   Ein Ausdruck wie btnOK.ForeColor="yellow" ist demgegenüber nicht möglich, weil der ForeColor-Eigenschaft kein String zugewiesen werden kann.

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

Abbildung 8.1 Beim Anklicken verändert die Schaltfläche ihre Form.

So ähnlich verhält es sich, wenn Sie keine vordefinierte Farbe verwenden, sondern eine Farbe über einen RGB-Wert festlegen möchten. Die Art der Deklaration im HTML-Code ist bekannt: BackColor="#00AA00". Innerhalb des VB.NET-Codes hilft wieder die Color-Struktur weiter:

btnOK.BackColor = _
         System.Drawing.Color.FromArgb(255,192,102)

Die Methode FromArgb() liefert ein Color-Objekt, dessen RGB-Werte Sie der Methode einzeln übergeben.


Galileo Computing

8.1.3 Die Klasse Unit und die Enumeration UnitType  toptop

Einen weiteren Stolperstein liefert diese unscheinbare Zuweisung in der Deklaration: BorderWidth="5". Das Button-Steuerelement kennt zwar die Eigenschaft BorderWidth. Diese ist aber nicht vom Typ Integer, sondern benötigt ein Objekt vom Typ Unit. Die Klasse Unit kennt verschiedene Konstruktoren. btnOK_Click() verwendet eine der Varianten:

btnOK.BorderWidth = New Unit(5, UnitType.Pixel)

Als erster Parameter wird die Zahl 5 übergeben. Der zweite Parameter legt die Einheit fest. Die Enumeration UnitType stellt verschiedene Einheiten zur Verfügung. Das Beispiel ruft UnitType.Pixel auf.


Tipp   Wenn Sie Schwierigkeiten haben sollten, einzelne Merkmale von Steuerelementen programmgesteuert zu kontrollieren, dann sollten Sie zunächst in der Online-Dokumentation nach dem entsprechenden Steuerelement und der zugehörigen Eigenschaft suchen. Wie die Beispiele gezeigt haben, sind diese Eigenschaften oft nicht vom Typ String oder Integer, sondern sie verwenden andere Klassen des .NET Frameworks.

Wenn Sie diesen benötigten Typ erst einmal entdeckt haben, dann haben Sie das größte Problem bereits gelöst. Anschließend werden Sie über die Online-Dokumentation rasch in Erfahrung bringen können, wie Sie ein Objekt vom gewünschten Typ erzeugen können.

  

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