Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 8 Webserversteuerelemente
|  | 8.1 Webserversteuerelemente formatieren
|  |  | 8.1.1 Die FontInfo-Klasse
|  |  | 8.1.2 Die System.Drawing.Color-Struktur
|  |  | 8.1.3 Die Klasse Unit und die Enumeration UnitType
|  | 8.2 Button
|  |  | 8.2.1 OnClick
|  |  | 8.2.2 OnCommand
|  | 8.3 LinkButton
|  | 8.4 ImageButton
|  | 8.5 HyperLink
|  | 8.6 Label
|  | 8.7 Literal
|  | 8.8 Panel
|  | 8.9 TextBox
|  |  | 8.9.1 Mit JavaScript den Fokus setzen
|  | 8.10 CheckBox
|  | 8.11 Image
|  | 8.12 Webserversteuerelemente für Tabellen
|  | 8.13 RadioButton
|  | 8.14 Calendar
|  | 8.15 AdRotator
|  | 8.16 E-Mails versenden
|  |  | 8.16.1 Versand von E-Mails mit der Klasse SmtpMail
|  |  | 8.16.2 E-Mails mit der Klasse MailMessage erstellen
## 8.12 Webserversteuerelemente für Tabellen
Klassen | System.Web.UI.WebControls.Table System.Web.UI.WebControls.TableCell System.Web.UI.WebControls.TableRow
Deklaration | <asp:Table id="Table1" BackImageUrl="url" CellSpacing="cellspacing" CellPadding="cellpadding" GridLines="None|Horizontal|Vertical|Both" HorizontalAlign= "Center|Justify|Left|NotSet|Right" runat="server"> <asp:TableRow> <asp:TableCell> Cell text </asp:TableCell> </asp:TableRow> </asp:Table>
Erzeugter HTML-Code | Normaler HTML-Code unter Verwendung der üblichen Elemente TABLE, TR und TD
Kurzcharakteristik | Die Webserversteuerelemente für Tabellen bieten die serverseitigen Entsprechungen für die allseits bekannten Tabellenelemente von HTML.
Beim Erstellen einfacher HTML-Dateien bereitet die Verwendung der bekannten HTML-Elemente TABLE, TR und TD wahrscheinlich weniger Mühe als der Einsatz der entsprechenden Webserversteuerelemente. Der primäre Einsatzzweck der Tabellen-Steuerelemente liegt darin, dass Sie im Rahmen von .NET-Code die Tabellen leichter dynamisch zusammensetzen können. webserver_table01.aspx zeigt ein entsprechendes Beispiel: Der Anwender gibt die gewünschte Anzahl von Zeilen und Spalten ein und eine Skript-Routine erstellt eine entsprechende Tabelle. Die Zellen werden fortlaufend nummeriert, und damit die Tabelle nicht so langweilig wird, erhält jede Zelle eine per Zufallsgenerator erzeugte Hintergrundfarbe. Abbildung 8.7 zeigt das Ergebnis im Browser.
    <!-- webserver_table01.aspx -->
    <% @Page Language="VB" debug="True" Strict="True" %>
    <% @Import Namespace="System.Drawing" %>
    <% @Import Namespace="System.Random" %>
    <script runat="server" >
    dim zufall as New System.Random()
    Sub Page_Load (ByVal Sender As Object, _
                          ByVal E As EventArgs)
       If Page.IsPostBack Then
          Dim numSpalten As Integer = _
                       CType(anzahlSpalten.text, Integer)
          Dim numZeilen As Integer = _
                        CType(anzahlZeilen.text, Integer)
          Dim i As Integer
          Dim k As Integer
          Dim zaehler as integer = 1
          ' Tabelle erstellen und dem Ausgabepanel zuweisen
          Dim eineTabelle as new Table()
          ausgabe.Controls.Add(eineTabelle)
          eineTabelle.GridLines = GridLines.Both
          eineTabelle.BorderWidth = Unit.Pixel(1)

          For i = 1 to numZeilen
             ' eine neue Reihe erstellen und der Tabelle
             ' zuweisen
             Dim eineReihe as TableRow = New TableRow()
             eineTabelle.Rows.Add (eineReihe)
             For k = 1 to numSpalten
                ' eine neue Zelle erstellen und der Reihe
                ' zuweisen
                Dim eineZelle As New TableCell()
                eineReihe.Cells.Add (eineZelle)
                ' den Zelleninhalt gestalten
                Dim lbl as Label = new Label()
                eineZelle.Controls.Add(lbl)
                lbl.text = CType (zaehler, String)
                zaehler += 1
                eineZelle.BackColor = getZufallsFarbe ()
             Next
          Next
       End If
    End Sub
    Function getZufallsFarbe () As System.Drawing.Color
       Dim min As Integer = 0
       Dim max As Integer = 255
       Dim r As Integer = zufall.next (min, max)
       dim g As Integer = zufall.next (min, max)
       dim b As Integer = zufall.next (min, max)
       return System.Drawing.Color.FromArgb (r,g,b)
    End Function
    </script>
    <html><head>
    <title>Webserversteuerelemente: Tabellen</title>
    </head><body>
    <h3>Bunte Tabellen zu verschenken</h3>
    <form runat="server" id="myForm">
    Wie viele Spalten soll die Tabelle haben?
    <asp:TextBox type="SingleLine" runat="server"
           Columns="2"
           MaxLength="2"
           id="anzahlSpalten" />
    <br>
    Wie viele Zeilen soll die Tabelle haben?
    <asp:TextBox type="SingleLine" runat="server"
           Columns="2"
           MaxLength="2"
           id="anzahlZeilen" />
    <br><br>
    <asp:Button id="btnOK" runat="server"
           Text="   OK   " />
    <br><br>
    <asp:Panel id="ausgabe" runat="server"
                    Width="50%" />
    </form></body></html>
Hier klicken, um das Bild zu Vergrößern Abbildung 8.7 Die Hintergrundfarben werden mit einem Zufallsgenerator erzeugt. Der HTML-Teil des Skripts definiert lediglich die beiden Eingabefelder, den OK-Button und ein zunächst noch leeres Panel. Bei der Eingabe der gewünschten Spalten- und Zeilenanzahl wird die maximale Länge auf zwei Zeichen beschränkt, um Monster-Tabellen zu vermeiden. Beim Versenden des Formulars wird die Page_Load-Prozedur ausgeführt. Nach der Eingabe trifft die Bedingung IsPostBack zu und die Tabellenfabrik beginnt mit der Arbeit. Da die Seite die Anweisung Strict="True" beinhaltet, müssen die eingegebenen Werte zunächst in einen Integer-Typ konvertiert werden.
    Dim numSpalten As Integer = _
                       CType(anzahlSpalten.text, Integer)
    Dim numZeilen As Integer = _
                       CType(anzahlZeilen.text, Integer)
Die Tabelle wird erstellt und dem Ausgabe-Panel hinzugefügt.
          Dim eineTabelle as new Table()
          ausgabe.Controls.Add(eineTabelle)
Einige Tabelleneigenschaften werden gesetzt. Der GridLines-Eigenschaft wird ein Wert aus der GridLines-Enumeration zugewiesen.
    eineTabelle.GridLines = GridLines.Both
Um die Randstärke angeben zu können, benötigen Sie für die Eigenschaft BorderWidth ein Objekt vom Typ Unit. Mit der statischen Funktion Pixel() der Klasse Unit erstellen Sie ein entsprechendes Objekt mit der gewünschten Pixelzahl.
    eineTabelle.BorderWidth = Unit.Pixel(1)
Zwei verschachtelte For-Schleifen erstellen zunächst die Reihen ...
    Dim eineReihe as TableRow = New TableRow()
    eineTabelle.Rows.Add (eineReihe)
... und dann die Zellen.
    Dim eineZelle As New TableCell()
    eineReihe.Cells.Add (eineZelle)
Die Add-Methode fügt der jeweiligen Collection Rows beziehungsweise Cells das neu erzeugte Objekt hinzu. Den Zellen selbst wird ein Label-Objekt mit fortlaufender Nummerierung zugewiesen. Für die Definition der Hintergrundfarbe verfügt das Skript über die selbst geschriebene Funktion getZufallsFarbe(). Diese Funktion liefert das benötigte Objekt vom Typ System.Drawing.Color zurück. Drei zufällige Werte zwischen 0 und 255 erzeugen mit Hilfe der Funktion System.Drawing.Color.FromArgb das gewünschte Objekt. Das zufall-Objekt selbst wird nicht innerhalb der Funktion getZufallsFarbe erzeugt, sondern außerhalb der Prozeduren. Wenn Sie die Zeile
    dim zufall as New System.Random()
in die Prozedur getZufallsFarbe() selbst hineinlegen, werden Sie die merkwürdige Erfahrung machen, dass die Tabellenzellen fast alle die gleiche Farbe bekommen. Die Ursache dafür dürfte darin zu suchen sein, dass Zufallszahlengeneratoren immer irgendwelche Zeitangaben verarbeiten, um einen Startwert zu bekommen. Wenn Sie das System.Random-Objekt in der Funktion stets neu erzeugen, dann scheint die Ausgangsposition für dieses Zufallsobjekt zu ordentlich zu sein, als dass es genügend Unordnung erzeugen könnte. Wenn Sie das System.Random-Objekt aber statt dessen außerhalb der Prozedur definieren und nur einmal initialisieren, bleibt dem Objekt offenkundig genügend Zeit, um mächtig Unordnung zu erzeugen. Jedenfalls kann ich mir das Phänomen nicht anders erklären. Zwei Zeilen ganz am Anfang des Skripts sollen noch erwähnt werden:
    <% @Import Namespace="System.Drawing" %>
    <% @Import Namespace="System.Random" %>
Diese beiden Namespaces müssen Sie eigens importieren, um die enthaltenen Klassen im Skript verwenden zu können.
Tipp Bevor Sie ein entsprechendes Beispiel produktiv einsetzen, sollten Sie einmal einen Blick auf den erzeugten Quellcode werfen. Den größten Teil des Quellcodes macht das Viewstate-Feld aus, das in Kapitel 11, der Status von Seiten, Sitzungen und Applikationen, näher vorgestellt wird. Für dieses Beispiel sind aber die Viewstate-Informationen nicht erforderlich. Daher sollten Sie in der Page-Direktive zusätzlich das Attribut EnableviewState="False" angeben. Anschließend sind die erzeugten HTML-Seiten nur noch halb so groß.
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

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