Eventsource bei serverseitiger Eventregistrierung

Zugriffe: 2512 starstarstarstarstarstarstarstarstarstar Bewertung:0 (0 Bewertungen) 10.04.2008

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); }
 }

 


Neuen Kommentar verfassen

Bestätigungscode