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


Galileo Computing

8.3 LinkButton  toptop


Klasse System.Web.UI.WebControls.LinkButton
Deklaration <asp:LinkButton id="myLinkID"
Text="Link-Text"
OnCommand="OnCommand-Methode"
Command="Kommando"
CommandArgument="Argument"
CausesValidation="true | false"
OnClick="OnClick-Methode"
runat="server"> Der Link-Text kann alternativ auch hier angegeben werden. </asp:LinkButton>
Erzeugter HTML-Code <a id="..." href="javascript:__doPostBack('...','')">Link-Text</a>
Kurzcharakteristik Ein LinkButton funktioniert wie ein Button. Er sieht aber so aus wie ein Link und funktioniert nur bei aktiviertem JavaScript!

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

Abbildung 8.3 LinkButton-Steuerelemente funktionieren nur bei aktiviertem JavaScript.

webserver_linkbutton01.aspx setzt das Beispiel mit den drei Hintergrundfarben mit drei LinkButton-Elementen um. Abbildung 8.3 zeigt die Darstellung im Browser.

<!-- webserver_linkbutton01.aspx -->
<%@ Page Language="VB" Debug="True" Strict="True" %>
<script runat="server">
Sub setFarbe (Sender As Object, E As CommandEventArgs)
lblTest.BackColor=Drawing.Color.Blue
   Select Case E.commandName
       Case "rot"
            lblTest.BackColor=Drawing.Color.Red
         Case "gelb"
            lblTest.BackColor=Drawing.Color.Yellow
         Case "blau"
            lblTest.BackColor=Drawing.Color.Blue
    End Select
End Sub
</script>
<html><head>
<title>Webserversteuerelemente: LinkButton</title>
</head><body>
<form runat="server" id ="myForm">
<asp:Label 
       id="lblTest" 
       Text ="    Test    " 
       runat="server" />
<br><br>
<asp:LinkButton id="LinkRot"
       Text="Rot"
       OnCommand="setFarbe"
       CommandName="rot"
       CommandArgument=""
       runat="server" />
<asp:LinkButton id="LinkGelb"
       Text="Gelb"
       OnCommand="setFarbe"
       CommandName="gelb"
       CommandArgument=""
       runat="server" />
<asp:LinkButton id="LinkBlau"
       Text="Blau"
       OnCommand="setFarbe"
       CommandName="blau"
       CommandArgument=""
       runat="server" />
</form></body></html>

Achtung   Die Version mit einfachen Buttons funktioniert auch bei abgeschaltetem JavaScript. Die Version mit LinkButtons funktioniert bei abgeschaltetem JavaScript nicht. Kein Wunder, denn der erzeugte HTML-Code hat diese Form:

<!-- webserver_linkbutton01.aspx -->
<html><head>
<title>Webserversteuerelemente: LinkButton</title>
</head><body>
<form name="myForm" method="post" action="webserver_linkbutton01.aspx" id="myForm">
<input type="hidden" name="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" 
value="dDwtMTMyNzk1OTkyNjt0PDtsPGk8Mj47PjtsPHQ8O2w8aTwxPjs+
O2w8dDxwPHA8bDxUZXh0O0JhY2tDb2xvcjtfIVNCOz47bDwgICAgVGVzdCAgICA
7MjxSZWQ+O2k8OT47Pj47Pjs7Pjs+Pjs+Pjs+yg9t9NrFRJH6x40QqXjuHPeWL+w=" />
<script language="javascript">
<!--
 function __doPostBack(eventTarget, eventArgument) {
 <$tab>var theform = document.myForm;
 <$tab>theform.__EVENTTARGET.value = eventTarget;
 <$tab>theform.__EVENTARGUMENT.value = eventArgument;
 <$tab>theform.submit();
 }
// -->
</script>
<span id="lblTest" style="background-color:Red;">    Test    </span>
<br><br>
<a id="LinkRot" href="javascript:__doPostBack('LinkRot','')">Rot</a>
<a id="LinkGelb" href="javascript:__doPostBack('LinkGelb','')">Gelb</a>
<a id="LinkBlau" href="javascript:__doPostBack('LinkBlau','')">Blau</a>
</form></body></html>

Die Möglichkeit, in einer Website mit Hilfe von Links zu navigieren, ist so grundlegend, dass man diese Navigationsmöglichkeit mit LinkButton-Elementen nur dann verwenden sollte, wenn sichergestellt ist, dass Browser ohne JavaScript auf andere Art und Weise bedient werden.

Bei einem Steuerelement, das die Bezeichnung »Link« im Namen führt, liegt die Frage nahe, wo man denn den URL angeben kann, zu dem hingesprungen werden soll. Die Antwort lautet: Dafür ist kein Attribut vorgesehen, weil ein LinkButton nur so aussehen soll wie ein Link, im Wesentlichen aber die Funktionalität eines Buttons bietet, das heißt, es soll Skript-Code ausgeführt werden. Die Betonung beim LinkButton liegt auf Button, nicht auf Link. Wenn gewünscht, kann aber innerhalb dieses Skript-Codes mit Response.Redirect zu einer anderen Seite gesprungen werden. Die entsprechenden Code-Fragmente würden so lauten:

<script runat="server">
Sub myLink_Click (Sender As Object, E As EventArgs)
   Response.Redirect ("http://www.wohinauchimmer.nurweg")
End Sub
</script>
...
<asp:LinkButton id="myLink"
       OnClick="myLink_Click"
       runat="server" >
Nur weg von hier! Aber ach! Ohne JavaScript muss ich hier bleiben!
</asp:LinkButton>
  

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