René 's Weblog
...und was die Welt schon immer nicht wissen wollte
Eventsource bei serverseitiger Eventregistrierung
Zugriffe:1845Bewertung:0(0Bewertungen)10.04.2008 - René Drescher-Hackel

Wenn man zB. an einem HtmlTable-Objekt serverseitig das onclick-Attribute setzt, so hat man wieder clientseitig das Problem, dass bei manchen Browsern der Eventparameter null bzw undefined ist. Eine Lösung könnte darin bestehen, dass man bei der serverseitigen Festlegung des Attributes das Objekt this mit an die Clientmehtode übergibt.

Das folgende Beispiel setzt ein onclick-Attribut auf ein HTML-Tabelle-Objekt.

ASPX Seite:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoadUserControl.aspx.cs" Inherits="M2Office.Web.TestSeiten.LoadUserControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>EventTest</title>
</head>
<body>
<form id="form1" runat="server">
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem Text="Test1" Value="test1" />
<asp:ListItem Text="Test2" Value="test2" />
<asp:ListItem Text="Test3" Value="test3" />
</asp:RadioButtonList>
<asp:Table ID="Table1" runat="server">
<asp:TableRow ID="TableRow1" runat="server" TableSection="TableBody">
<asp:TableCell ID="TableCell1" runat="server" Text="Test1 0" />
<asp:TableCell ID="TableCell2" runat="server" Text="Test2 0" />
<asp:TableCell ID="TableCell3" runat="server" Text="Test3 0" />
</asp:TableRow>
<asp:TableRow ID="TableRow2" runat="server" TableSection="TableBody">
 <asp:TableCell ID="TableCell4" runat="server" Text="Test1 1" />
<asp:TableCell ID="TableCell5" runat="server">
<asp:TextBox ID="TextBox1" runat="server" Text="Text in Textbox" />
</asp:TableCell> <asp:TableCell ID="TableCell6" runat="server" Text="Test3 1" />
</asp:TableRow>
<asp:TableRow ID="TableRow3" runat="server" TableSection="TableBody">
<asp:TableCell ID="TableCell7" runat="server" Text="Test1 2" />
<asp:TableCell ID="TableCell8" runat="server" Text="Test2 2" />
<asp:TableCell ID="TableCell9" runat="server" Text="Test3 2" />
</asp:TableRow>
</asp:Table>
</form>
 </body>
 </html>

CodeBehinde:

using System; namespace M2Office.Web.TestSeiten { 
   public partial class LoadUserControl : System.Web.UI.Page { 
      protected void Page_Load(object sender, EventArgs e) { 
         RadioButtonList1.Attributes.Add("onclick", "MyClick(this)"); 
         Table1.Attributes.Add("onclick", "MyClick(this)"); 
      } 
   }
}

Javascript:


function MyClick(obj){ 
      var evt = obj.onclick.arguments.length > 0? obj.onclick.arguments[0] : null; 
      if(evt == null){ evt = window.event; } 
            var obj1 = evt.srcElement? evt.srcElement : evt.target; 
            var obj2 = null; if(obj1.htmlFor != undefined){ 
                  alert(document.getElementById(obj1.htmlFor).checked); 
      }else if(obj1.value != undefined){ 
            alert(obj1.value); 
      }else{ 
            alert(obj1.tagName + " = " + obj1.innerHTML); }
 }

Kick it on dotnet-kicks.de
sehr gutungenügend

Ihr Kommentar zu diesem Beitrag:
your gravatar
Sollten die Eingabefelder deaktiviert sein, so aktualisieren Sie den Bestätigungscode.
Best&auml;tigungscode
Das Weblog von René Drescher-Hackel beschäftigt sich überwiegend mit Themen aus dem Bereich der Webanwendungsentwicklung mit den Themenschwerpunkten ASP.NET und C# im DOT-NET Framework 2.0 / 3.5. In der clientseitigen Entwicklung liegt der Schwerpunkt bei Javascript und jQuery. René; Drescher-Hackel hat die Prüfung zum Microsoft Certified Tecnology Specialist - .NET Framework 2.0 Web Applications abgelegt.