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 10 Webserversteuerelemente selbst erstellen
  gp 10.1 Benutzersteuerelemente (User Controls)
    gp 10.1.1 Ein einfaches Benutzersteuerelement erstellen
    gp 10.1.2 Die Control-Direktive
    gp 10.1.3 Die Register-Direktive für Benutzersteuerelemente verwenden
    gp 10.1.4 Die Basisklasse UserControl
    gp 10.1.5 Eigenschaften für Benutzersteuerelemente definieren
    gp 10.1.6 In Benutzersteuerelementen auf Ereignisse reagieren
  gp 10.2 Benutzerdefinierte Steuerelemente (Custom Controls)
    gp 10.2.1 Eine zählende Schaltfläche


Galileo Computing

10.2 Benutzerdefinierte Steuerelemente (Custom Controlsdowntop

Benutzersteuerelemente sind Ausschnitte aus aspx-Seiten und mischen dementsprechend HTML- und Skript-Anteile. Im Unterschied dazu sind benutzerdefinierte Steuerelemente Klassen, die ausschließlich auf der Basis von VB.NET- beziehungsweise C#-Code aufgebaut werden.

Unter ASP.NET haben Sie verschiedene Möglichkeiten, eigene Steuerelemente zu entwickeln. Die Dokumentation nennt drei prinzipielle Möglichkeiten.

gp  Wenn Sie ein vorhandenes Webserversteuerelement um einige Merkmale erweitern möchten, dann können Sie ein eigenes Steuerelement von dieser Basisklasse ableiten und lediglich die zusätzlich gewünschten Merkmale ergänzen.
gp  Sie können mehrere Steuerelemente zu einem zusammengesetzten Steuerelement verbinden.
gp  Sie können ein völlig eigenes Steuerelement entwickeln, indem Sie eine Klasse beispielsweise von der Basisklasse Control direkt ableiten und alle Funktionen selbst programmieren.

Je nach Aufgabenstellung kann die Entwicklung von benutzerdefinierten Steuerelementen sehr komplex werden. Im Rahmen dieses Buches möchte ich lediglich demonstrieren, wie Sie ein eigenes Steuerelement von einem vorhandenen Webserversteuerelement ableiten können. Als einfaches Beispiel soll eine Schaltfläche dienen, die auf ihrer Beschriftung anzeigt, wie oft sie angeklickt wurde.


Galileo Computing

10.2.1 Eine zählende Schaltfläche  toptop

zaehlbutton01.vb enthält den Code für die Klasse, die die zählende Schaltfläche realisiert.

Zunächst müssen Sie hier mit einigen Imports-Befehlen die benötigten Namensräume einbinden.

Imports System
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

Als Nächstes müssen Sie auf jeden Fall einen eigenen Namensraum angeben. Das Beispiel verwendet die Bezeichnung meineControls. Die Klasse für Ihr eigenes Steuerelement muss innerhalb dieses Namensraums liegen.

Namespace meineControls
' ...
End Namespace

Die Klasse für die zählende Schaltfläche leiten Sie von der Basisklasse Button ab, so dass sich diese Signatur ergibt:

Public Class zaehlbutton
             Inherits System.Web.UI.WebControls.Button
' ...
End Class

Im Konstruktor geben Sie die Beschriftung der Schaltfläche an. Außerdem merken Sie sich im ViewState, dass die Schaltfläche bislang noch nicht aufgerufen wurde, vergeben also den Zähler 0.

   Public Sub New()
      Me.Text = "0-mal angeklickt"
      ViewState("AnzahlClicks") = 0
   End Sub

Die Funktionalität selbst, dass die Schaltfläche beim Anklicken ihre Beschriftung ändert und die Anzahl der Klicks mitzählt, realisieren Sie, indem Sie die Ereignisprozedur für das Click-Ereignis überschreiben. Innerhalb der Methode OnClick inkrementieren Sie den im ViewState gespeicherten Zähler, definieren die Beschriftung neu und reichen das Click-Ereignis anschließend zur weiteren Bearbeitung an die OnClick-Methode der Basisklasse weiter.

Die Klasse zaehlbutton01.vb hat damit insgesamt diese Form:

' zaehlbutton01.vb
Imports System
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace meineControls
Public Class zaehlbutton
             Inherits System.Web.UI.WebControls.Button
   Public Sub New()
      Me.Text = "0-mal angeklickt"
      ViewState("AnzahlClicks") = 0
   End Sub
      
   Protected Overrides Sub OnClick _
                           (ByVal e As EventArgs)
      ViewState("AnzahlClicks") = _
                 CInt (ViewState("AnzahlClicks")) + 1
      Me.Text = CStr(ViewState("AnzahlClicks")) _
                & "-mal angeklickt"
      MyBase.OnClick(e)                             
   End Sub              

End Class
End Namespace

Dann stellt sich die Aufgabe, diese selbst erstellte Klasse zu kompilieren. Der Aufruf für den Kommandozeilencompiler lautet:

vbc /t:library /out:zaehlbutton01.dll zaehlbutton01.vb /r:System.dll /r:System.Web.dll

Mit /t:library geben Sie an, dass eine dll-Datei (und keine exe-Datei) erstellt werden soll. Mit /out:zaehlbutton01.dll definieren Sie den Namen der zu erstellenden Datei. Anschließend nennt zaehlbutton01.vb den Namen der Quelldatei. Mit /r:System.dll und /r:System.Web.dll geben Sie die benötigten Verweise an.

Der Compiler erstellt die Datei zaehlbutton01.dll. Diese dll-Datei kopieren Sie anschließend in das /bin-Verzeichnis Ihrer Webanwendung.

zaehlbutton01.aspx ruft das selbst erstellte Steuerelement auf.

<!-- zaehlbutton01.aspx -->
<%@ Page Language="VB" Debug="True" Strict="True" %>
<%@ Register TagPrefix="mlohrer" 
             Namespace="meineControls" 
             Assembly="zaehlbutton01" %>
<html><head><title>Zähl-Button</title></head>
<body>
<h3>Gezählt!</h3>
<form runat="server">
<mlohrer:zaehlbutton runat="server" />
</form></body></html>

In der aspx-Seite müssen Sie das selbst erstellte Steuerelement zunächst mit der Register-Direktive registrieren. Mit dem Attribut TagPrefix legen Sie ein Präfix fest, das Sie innerhalb der aspx-Seite für Ihr eigenes Steuerelement verwenden. Mit dem Attribut Namespace geben Sie den Namensraum an, den Sie innerhalb der VB-Datei festgelegt haben. Mit dem Attribut Assembly geben Sie den Namen der dll-Datei an, die Ihr selbst erstelltes Steuerelement enthält.

Abbildung 10.3 zeigt die Darstellung im Browser. Jedes Mal, wenn die Schaltfläche angeklickt wird, zählt sie in der Beschriftung mit.

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

Abbildung 10.3 Das selbst erstellte Steuerelement zählt, wie oft es angeklickt wurde.

  

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