8.3 LinkButton
 
| 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!
|
 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>
|