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
|
der Klassenname, |
|
die Deklaration des Steuerelements, |
|
der erzeugte HTML-Code und |
|
eine Kurzcharakteristik. |
Im Anschluss an den Steckbrief wird anhand von Beispielen die konkrete Verwendung erläutert.
8.1 Webserversteuerelemente formatieren
 
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.
8.1.1 Die FontInfo-Klasse
 
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.
8.1.2 Die System.Drawing.Color-Struktur
 
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.
|
 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.
8.1.3 Die Klasse Unit und die Enumeration UnitType
 
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.
|