【问题标题】:VB ASP dynamic button click event not hitting handler eventVB ASP 动态按钮单击事件未命中处理程序事件
【发布时间】:2018-12-20 17:58:46
【问题描述】:

我正在为分页动态创建按钮,单击时应该调用事件处理程序。回发正在发生,但它从未命中事件子。 这是我的按钮创建代码(i = 0):

 Do While (i < pages)
    Dim btn As New Button With {
        .Text = (i).ToString,
        .CommandArgument = (i).ToString,
        .ID = "btnGrdPage_" + (i).ToString
    }

    AddHandler btn.Click, AddressOf Me.btnGrdParticipantPage_Click
    dvPageNumbers.Controls.Add(btn)

    i += 1

Loop

我试图点击的事件如下:

 Protected Sub btnGrdParticipantPage_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim x = 1
    ...
 End Sub

【问题讨论】:

  • 您的按钮是否也在 page_load 期间在回发时创建?
  • 我相信是这样;在初始页面加载时,循环在子程序中调用,在随后的回发中,通过按钮单击调用相同的子程序。

标签: asp.net vb.net dynamic webforms


【解决方案1】:

该代码在哪里?

请记住,每个回发都会创建(然后销毁)页面类的全新实例。您不会从一个帖子到另一个帖子保持相同的实例。这意味着创建控件的代码必须在每次回发时重新运行。否则,这些控件将不存在,它们将在下一个服务器事件后消失。而且,这必须在页面生命周期的早期发生...在 ViewState 恢复之前,因为如果此时控件还不存在,它们就无法获得更新的 ViewState,而 ViewState 是页面生命周期如何知道他们需要引发点击事件。 Page_Load() 为时已晚。 尝试改用 Page_Init()Page_PreInit()

【讨论】:

  • 我明白了,这似乎是问题所在。我将重构代码,谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
相关资源
最近更新 更多