首页 > 解决方案 > 动态按钮控件未绑定到 VB.NET 中的事件处理程序

问题描述

所以首先让我提一下,这类似于发布的另外两个有利的问题。我已经使用这些(帖子一帖子二)作为参考来尝试帮助我的情况,但我离解决我的问题还差得远。

我在下面添加了相关代码,同时注意不要发布“代码墙”。

目标

所以我想要做的是向以编程方式创建的按钮添加一个点击事件。每个按钮都会启动一个 postBack 并将数据保存到数据库,而无需重新渲染整个页面。

问题

我下面的代码可以编译,但在页面呈现时事件未绑定到控件,并且没有任何内容表明“单击”事件已绑定到按钮。

我想知道我是不是做错了什么,或者我是否被迫使用一些技巧,或者作为建议使用 LinkBut​​tons 的帖子之一。但是,在我看来,LinkBut​​tons 不适合这种情况。我还引用了 LinkBut​​ton vs Button

欢迎所有反馈。谢谢你。

页面.ascx

<asp:UpdatePanel ID="parentWrapper" runat="server">
  <ContentTemplate>
    <asp:PlaceHolder ID="itemsPlaceHolder" runat="server" />
  </ContentTemplate>
</asp:UpdatePanel>

page.ascx.vb(代码隐藏)

Protected Sub Items_Load()
  'For Brevity purposes, only the itemBtn
  'is added to the parent controller. Other controls are omitted on purpose.
  'There are 200 other items that will be rendered as well.

  Dim itemContainer = New WebControl(HtmlTextWriterTag.Div),
      itemBtn = New Button()

  itemBtn.Text = "select"
  itemBtn.UseSubmitBehavior = False
  AddHandler itemBtn.Click, AddressOf ItemSelectBtn_Click

  itemContainer.Controls.Add(itemBtn)

  WorkshopsPlaceHolder.Controls.Add(itemContainer)

End Sub

Private Sub ItemSelectBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
        Response.Write("<script>console.log('clicked & doPostBack')</script>")
End Sub

更新

itemBtn.UseSubmitBehavior = False

所以我做了很多研究,到目前为止,这是帮助我实现目标的最佳选择。我不确定原始页面或网站对我有什么帮助,但它引导我访问了这个MSDN 链接

这篇 SO 帖子帮助我解决了Asp Button 类型

希望这对其他人有所帮助。

标签: asp.netvb.net

解决方案


试着写:

Handles ItemSelectBtn.Click

ItemSelectBtn_Click([...])

推荐阅读