2009-06-15 6 views
0

Ich habe mein Gehirn versucht, dies zur Arbeit zu bringen. Mein Ereignis für meinen LinkButton wird nicht ausgelöst. Ich denke, es hat etwas mit ViewState zu tun und die Schaltfläche ist nicht da, wenn es versucht, das Ereignis nach dem Postback oder etwas zu feuern.Wie kann ich AddHandler mit OnCommand in ASP.NET anwenden

Wenn ich auf die Schaltfläche Hinzufügen klicke, fügt es den Link zur Seite hinzu und wenn ich dann auf die Verknüpfung "Diplay Time" klicke, sollte das Ereignis ausgelöst und die CommandArgument-Daten angezeigt werden, aber das geht nicht und ich kann nicht herausfinden warum.

Hier ist mein Code:

<%@ Page Language="VB" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server"> 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 

    End Sub 

    Protected Sub btnDelete_OnCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) 
     Response.Write(e.CommandArgument) 
    End Sub 

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim btn As New LinkButton() 
     btn.ID = "lbn" 
     btn.Text = "Display Time" 
     btn.ValidationGroup = "vgDeleteSigner" 
     AddHandler btn.Command, AddressOf btnDelete_OnCommand 
     btn.CommandArgument = Now.TimeOfDay.ToString() 
     btn.EnableViewState = True 
     Panel1.Controls.Add(btn) 
    End Sub 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
     <asp:Panel ID="Panel1" runat="server"> 
     </asp:Panel> 
    </div> 
    </form> 
</body> 
</html> 

Antwort

1

der Grund, dass geschieht, ist, dass Ihre dynamische Schaltfläche „LBN“ gezeichnet werden muss wieder auf Post zurück, wenn es angeklickt wird, weil der Knopf nicht existiert, nachdem Sie es klicken.

Grundsätzlich sind Sie einfach müssen die Schaltfläche dynamisch zur Seite hinzufügen, wenn Sie auf diese Schaltfläche klicken.

Ich würde empfehlen, die Schaltfläche bereits auf der Seite aber sichtbar = falsch und dann nur zeigen, wenn Sie auf die andere Schaltfläche klicken.

+0

@King: "Ich würde empfehlen, die Schaltfläche bereits auf der Seite, aber sichtbar = falsch und dann nur zeigen, wenn Sie auf die andere Schaltfläche klicken." - Ja, ich stimme dem zu, außer dass dies ein sehr einfaches Beispiel für das ist, was ich tun möchte. Dies wäre nicht möglich, da es eine unbegrenzte Anzahl von Linkbuttons geben könnte. – EdenMachine

+0

Wenn das der Fall ist, dann was ich tun würde ist, anstatt eine Reihe von Link-Buttons haben eine Reihe von Hyperlinks, die onclick eine versteckte Variable setzen und ein Postback der Seite verursachen. Dann in der Seitenladeprüfung prüfen, ob die Seite isPostback ist und abhängig vom Inhalt der Variablen eine Funktion auf dem dahinter liegenden Code ausführen. – Avitus

+0

Es wird ziemlich haarig, aber, wenn ich die Steuerelemente auf dem Page_Load hinzufüge und dann das Panel lösche, wenn sie auf den Knopf klicken, um sie wieder hinzuzufügen, funktioniert es wie es soll - danke! – EdenMachine

Verwandte Themen