Как применить AddHandler с помощью OnCommand в ASP.NET

Я ломал голову, пытаясь заставить это работать. Мое событие для моей 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 ответ

Решение

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

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

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

Другие вопросы по тегам