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 9 Webserversteuerelemente für die Darstellung von Listen
|  | 9.1 Die abstrakte Basisklasse ListControl
|  | 9.2 Das ListItem-Objekt
|  | 9.3 CheckBoxList
|  |  | 9.3.1 Kontrollkästchen-Listen statisch erstellen
|  |  | 9.3.2 Kontrollkästchen-Listen dynamisch erstellen
|  |  | 9.3.3 Dynamische Datenbindung
|  | 9.4 RadioButtonList
|  | 9.5 DropDownList
|  | 9.6 ListBox
|  | 9.7 Repeater und DataList
## 9.3 CheckBoxList
Klasse | System.Web.UI.WebControls.CheckBoxList
Deklaration | <asp:CheckBoxList id="myCheckBoxList" AutoPostBack="True|False" DataSource='<% databindingexpression %>' DataTextField="DataSource-Feld" DataValueField="DataSource-Feld" RepeatColumns="Anzahl Spalten" RepeatDirection="Vertical|Horizontal" RepeatLayout="Flow|Table" TextAlign="Right|Left" OnSelectedIndexChanged="Ereignisprozedur" runat="server">
| <asp:ListItem value="value" selected="True|False"> Text </asp:ListItem> </asp:CheckBoxList>
Erzeugter HTML-Code | Bei RepeatLayout="Flow": <span id="myCheckBoxList"> <input type="checkbox" ... /><label ...>Checkbox-Beschriftung</label><br> ... weitere Input-Elemente </span> Bei RepeatLayout="Table" werden die einzelnen Kontrollkästchen mit Hilfe einer HTML-Tabelle ausgerichtet.
Kurzcharakteristik | Das CheckBoxList-Steuerelement erzeugt in Verbindung mit ListItem-Elementen mehrere Kontrollkästchen.
### 9.3.1 Kontrollkästchen-Listen statisch erstellen Das erste Beispiel illustriert die grundlegende Verwendung und Definition einer Kontrollkästchen-Liste. Ein Formular stellt dem Anwender die Frage »Welche Programmiersprachen beherrschen Sie?« Mit Hilfe einer Reihe von Kontrollkästchen selektiert der Anwender die ihm vertrauten Sprachen.
    <!-- listen_checkbox01.aspx -->
    <%@ Page Language="VB" debug="True" Strict="True" %>
    <script runat="server" >
    Sub Page_Load (ByVal Sender As Object, _
                   ByVal E As EventArgs)
       If Page.IsPostBack Then
          Dim tmp As New StringBuilder()
          Dim li as ListItem
          For each li in checklisteSprachen.Items
             If li.selected() Then
                tmp.Append ("<li>" & li.Text)
             End If
          Next
          If tmp.Length = 0 Then
             ausgabe.Text = _
             "Sie beherrschen keine Programmiersprachen. "
          Else
             tmp.Insert (0, "Sie beherrschen: <ul>")
             tmp.Append ("</ul>")
             ausgabe.Text = tmp.ToString
          End If
       End If
    End Sub
    </script>
    <html><head>
    <title>Webserversteuerelemente für Listen: CheckBoxList
    </title></head><body>
    <h3>Webserversteuerelemente für Listen: CheckBoxList
    </h3>
    <form runat="server" id="myForm">
    Welche Programmiersprachen beherrschen Sie:<br>
    <asp:CheckBoxList runat="server"
         id="checklisteSprachen"
         AutoPostBack="true"
         RepeatColumns="1"
         RepeatLayout="Flow" >

         <asp:ListItem value="1" text="Java" />
         <asp:ListItem value="2">C++</asp:ListItem>
         <asp:ListItem>Visual Basic</asp:ListItem>
         <asp:ListItem text="Cobol" />
         <asp:ListItem value="Smalltalk" />
    </asp:CheckBoxList><br>
    <asp:Button id="btnOK" runat="server" Text="  OK  " />
    <p><asp:Label id="ausgabe" runat="server" /></p>
    </form></body></html>
Hier klicken, um das Bild zu Vergrößern Abbildung 9.1 Das CheckBoxList-Steuerelement erleichtert in Formularen die Darstellung von Listen. Das CheckBoxList-Steuerelement enthält in diesem Beispiel nur wenige Attribute. Mit RepeatColumns="1" und RepeatLayout="Flow" erhalten Sie eine einspaltige Auflistung, die im HTML-Code mit einfachen <br>-Tags umbrochen wird.
Tipp Die verschiedenen ListItem-Einträge demonstrieren die diversen Möglichkeiten, die Text- und Value-Attribute zu definieren oder es bleiben zu lassen. Wenn nur eines der beiden Attribute definiert wird, übernimmt ASP.NET den Wert automatisch auch für das andere Attribut. Der Wert für das Text-Attribut lässt sich entweder zwischen dem öffnenden und schließenden Tag oder ausdrücklich durch Verwendung des Text-Attributs bestimmen.
Die Page_Load-Prozedur erzeugt die Ausgabe im Label-Feld. Der Ausgabetext wird in einem Objekt der Klasse StringBuilder zusammengesetzt und am Schluss mit der Anweisung
    ausgabe.Text = tmp.ToString
dem Ausgabefeld zugewiesen. Die For-Schleife klappert alle Einträge der Items-Collection von checklisteSprachen ab. Wenn ein Eintrag selektiert ist, wird der Text-Bestandteil der Liste dem temporären StringBuilder-Objekt angehängt:
    tmp.Append ("<li>" & li.Text)
Im Code wird man sonst häufig auf die Value-Eigenschaft zugreifen. Im Beispiel wurden in diesem Fall bei den Einträgen Java und C++ die Value-Werte 1 und 2 verwendet. Wenn die Items-Collection abgearbeitet wurde, werden einige ergänzende Text-Bestandteile eingefügt und das Ergebnis wird im ausgabe-Feld angezeigt. ### 9.3.2 Kontrollkästchen-Listen dynamisch erstellen Wenn Sie die Anzahl und die Art der Einträge für Ihre Kontrollkästchen-Liste zur Kompilierzeit nicht kennen, bieten sich verschiedene Möglichkeiten an, die Listeneinträge zur Laufzeit einzufügen. Das CheckBoxList-Steuerelement kennt das Init-Ereignis, mit dem Sie das Steuerelement initialisieren können. Wenn Sie das Beispiel-Formular dynamisch erzeugen möchten, ergänzen Sie bei der Deklaration des CheckBoxList-Steuerelements einen entsprechenden Prozeduraufruf und ergänzen diese Prozedur im Skript-Bereich. So nutzen Sie das Init-Ereignis zur Initialisierung einer Liste von Kontrollkästchen. Im ersten Schritt ergänzen Sie im Skript-Bereich diese Ereignisprozedur:
    Sub checklisteSprachen_Init (ByVal Sender As Object, _
                                 ByVal E As EventArgs)
    Dim sprachenText() As String = _
      {"Java", "C++", "Visual Basic", "Cobol", "Smalltalk"}
    Dim sprachenValue() As String = _
      {"jav", "cpp", "bas", "cob", "sma"}
    Dim i As Integer
    For i = 0 To sprachenText.GetLength(0) -1
       checklisteSprachen.Items.Add _
         (new ListItem(sprachenText(i), sprachenValue(i)))
    Next
    End Sub
Im zweiten Schritt ergänzen Sie im HTML-Bereich beim CheckBoxList-Steuerelement die Attributdefinition onInit="checklisteSprachen_Init". Außerdem definieren Sie keine ListItem-Einträge:
    <asp:CheckBoxList runat="server"
         id="checklisteSprachen"
         AutoPostBack="true"
         RepeatColumns="1"
         RepeatLayout="Flow"
         onInit="checklisteSprachen_Init" />
Das Skript legt zwei Arrays gleicher Länge an. sprachenText() enthält die Angaben für das Text-Attribut. In sprachenValue() definieren Sie gesondert die Einträge für das Value-Attribut. Die For-Schleife durchläuft alle Array-Einträge und fügt bei jedem Durchlauf der CheckBoxList einen weiteren ListItem-Eintrag hinzu:
       checklisteSprachen.Items.Add _
         (new ListItem(sprachenText(i), sprachenValue(i)))
Wenn Sie dem ListItem-Konstruktor zwei Text-Parameter übergeben, wird der erste Wert als Text-Attribut und der zweite Wert als Value-Attribut verwendet. ### 9.3.3 Dynamische Datenbindung Das ist schon nicht schlecht, aber es geht noch schneller. Wenn identische Werte für die Attribute Value und Text Sie nicht stören, können Sie über das DataSource-Attribut der CheckBoxList ein komplettes Array zuweisen. Die Initialisierungs-Prozedur hat dann diese Form:
    Sub checklisteSprachen_Init (ByVal Sender As Object, _
                                 ByVal E As EventArgs)
    Dim sprachenText() As String = _
      {"Java", "C++", "Visual Basic", "Cobol", "Smalltalk"}
    checklisteSprachen.DataSource = sprachenText
    checklisteSprachen.DataBind()
    End Sub
Sie können auch getrennte Werte für Value und Text angeben. Im Abschnitt 12.5.2 erfahren Sie außerdem genauer, wie Sie auch Tabellen aus Datenbanken an Listensteuerelemente anbinden können.
<< 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