Как применить AddHandler с помощью OnCommand в ASP.NET - PullRequest
0 голосов
/ 15 июня 2009

Я ломал голову, пытаясь заставить это работать. Мое событие для моей LinkButton не стреляет. Я полагаю, что это НЕЧТО связано с ViewState и что кнопка не появляется, когда она пытается запустить событие после обратной передачи или чего-то еще.

Когда я нажимаю кнопку «Добавить», она добавляет ссылку на страницу, а затем, когда я нажимаю кнопку «Время Diplay Time», она должна запускать событие и отображать данные CommandArgument, но это не так, и я не могу понять, почему.

Вот мой код:

<%@ 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>

1 Ответ

1 голос
/ 15 июня 2009

Причина, по которой это происходит, заключается в том, что ваша динамическая кнопка "lbn" должна быть снова нарисована на посте, когда она нажата, потому что кнопка не существует после нажатия на нее.

По сути, вам просто нужно динамически добавить кнопку на страницу еще раз после ее нажатия.

Я бы порекомендовал иметь кнопку уже на странице, но visible = false, а затем просто показывать ее, когда вы нажимаете другую кнопку.

...