【问题标题】:How can i create dynamic button click event on dynamic button - VB.net如何在动态按钮上创建动态按钮单击事件 - VB.net
【发布时间】:2014-02-08 06:13:26
【问题描述】:

我正在动态地在页面上创建一个按钮。现在我想在该按钮上使用按钮单击事件。我如何在 VB.net 和 asp.net 中做到这一点?

我的代码:

页面加载:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
               LoadControls()
             Catch ex As Exception

            End Try
        End Sub

加载控件

   Private Sub LoadControls()
    Try
       Dim ButtonTable As New HtmlTable
       Dim ButtonTableRow As New HtmlTableRow
       Dim ButtonTableCell As New HtmlTableCell
       Dim btnCode As New Button
           btnCode.ID = "btnCode"
           btnCode.Text = "btnCode"
           AddHandler btnCode.Click, AddressOf btnCode_Click
       ButtonTableCell.Controls.Add(btnCode)

       ButtonTableRow.Cells.Add(ButtonTableCell)
       ButtonTable.Rows.Add(ButtonTableRow)

       ControlsPlaceHolder.Controls.Add(ButtonTable)
 Catch ex As Exception

        End Try
    End Sub

事件处理程序

Private Sub btnCode_Click(sender As Object, e As EventArgs)

            Dim buttonId As New Button
            Try
                buttonId = DirectCast(sender, Button)

                // My execution
            Catch ex As Exception

            End Try
        End Sub

问题:

事件处理程序不会出现..!!它会引发错误

Multiple controls with the same ID were found

这段代码有什么问题..!!

【问题讨论】:

    标签: asp.net vb.net event-handling dynamic-controls


    【解决方案1】:

    创建动态按钮后,您的事件处理程序btnCode_Click“订阅”按钮事件:

    AddHandler btnCode.Click, AddressOf btnCode_Click
    

    那么EventHandler 必须至少是Protected,但你是Private - 那就不能访问了

    【讨论】:

    • 你看到我的代码了吗??我在代码中有这部分行,但它不起作用
    • 您在AddHandler... 检查事件处理程序名称的行中有错字
    • 不,这不是这里的问题,在这里发布时出现了拼写错误..!!
    • 问题依然存在..!!我已将其更改为受保护..!!
    • 您的代码中的btnSummary 是什么?而且我认为使用try..catch 而不处理exception 只会隐藏错误 - 难以调试...
    猜你喜欢
    • 2011-09-05
    • 2011-05-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多