Dynamisk tilføjede kontroller og events
Jeg har nogle checkboxes som jeg tilføjer udner opbygningen af en dynamisk tilføjet tabel, og har et mærkeligt antal kald til myCheckbox_CheckedChanged - den bliver kaldt ved hvert page_load for ALLE boxe hvor jeg har sat flue ben i, mens den ej bliverkaldt for dem hvor jeg fjerner fluebenet. For nu at forstå hvad der foregår har jeg lavet et meget simpelt eksempel :Partial Class Admin_test4
Inherits System.Web.UI.Page
Protected WithEvents mybox As CheckBox
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
mybox = New CheckBox
mybox.AutoPostBack = True
mybox.ID = "B1"
AddHandler mybox.CheckedChanged, AddressOf mybox_CheckedChanged
PlaceHolder1.Controls.Add(mybox)
mybox = New CheckBox
mybox.AutoPostBack = True
mybox.ID = "B2"
AddHandler mybox.CheckedChanged, AddressOf mybox_CheckedChanged
PlaceHolder1.Controls.Add(mybox)
mybox = New CheckBox
mybox.AutoPostBack = True
mybox.ID = "B3"
AddHandler mybox.CheckedChanged, AddressOf mybox_CheckedChanged
PlaceHolder1.Controls.Add(mybox)
System.Diagnostics.Debug.Write("pageload complete" & vbCrLf)
End Sub
Protected Sub mybox_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles mybox.CheckedChanged
Dim mybox As CheckBox
mybox = sender
System.Diagnostics.Debug.Write("changed " & mybox.ID.ToString & vbCrLf)
End Sub
End Class
og
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test4.aspx.vb" Inherits="Admin_test4" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</div>
</form>
</body>
</html>
Når jeg klikker på en checkbox som ikke er den sidste, så bliver CheckedChanged kaldt en gang som den skulle, uanset om jeg klikker eller afklikker. MEN, når jeg gør det med den sidste checkbox, så bliver CheckedChanged kaldt 2 gange (uanset om der er 2, 3 eller 4 checkboxe i alt). Hvordan kan det være ?