Asp.net 计时器方法节拍后的页面中缺少控件

Asp.net 计时器方法节拍后的页面中缺少控件,asp.net,timer,request.form,Asp.net,Timer,Request.form,我有一些处理计时器方法的代码,它只是更新一个标签,并将其更改为此时最后更新的标签 Protected Sub specialNotesTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles specialNotesTimer.Tick Label1.Text = "Panel refreshed at: " + DateTime.Now.ToLongTimeString() End Sub 但是,当它滴答作响时,

我有一些处理计时器方法的代码,它只是更新一个标签,并将其更改为此时最后更新的标签

Protected Sub specialNotesTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles specialNotesTimer.Tick
    Label1.Text = "Panel refreshed at: " + DateTime.Now.ToLongTimeString()
End Sub
但是,当它滴答作响时,通过按下按钮无法找到页面上的任何其他控件。图像按钮或我的其他动态创建的控件(即案例)丢失。 我有一个函数,它在页面上查找被激发的控件,然后返回该控件,以便我可以确定要做什么

Public Shared Function GetPostBackControl(ByVal thePage As Page) As Control
    Dim myControl As Control = Nothing
    Dim ctrlName As String = thePage.Request.Params.Get("__EVENTTARGET")
    If ((ctrlName IsNot Nothing) And (ctrlName <> String.Empty)) Then
        myControl = thePage.FindControl(ctrlName)
    Else
        For Each Item As String In thePage.Request.Form
            Dim c As Control = thePage.FindControl(Item)
            If (TypeOf (c) Is System.Web.UI.WebControls.Button) Then
                 myControl = c
            End If
        Next

    End If
    Return myControl
End Function
公共共享函数GetPostBackControl(通过将页面设置为页面)设置为控件
将myControl设置为控件=无
Dim ctrlName As String=page.Request.Params.Get(“\u事件目标”)
如果((ctrlName不是空的)和(ctrlName String.Empty)),那么
myControl=page.FindControl(ctrlName)
其他的
在page.Request.Form中将每个项目作为字符串
尺寸c作为控件=页面查找控件(项目)
如果(c)的类型是System.Web.UI.WebControls.Button),那么
myControl=c
如果结束
下一个
如果结束
返回myControl
端函数

这在timer.tick之前有效,但在timer.tick之后无效。控件不会在page.Request.Form中作为项列出,当我知道控件在那里时,它会抛出一个null异常。

输出日期时间的目的是什么?是一个动作真的发生了,还是你只是每X秒输出一个日期时间?如果后者为真,您可能希望使用Jquery来避免丢失动态控件。其目的只是调试以确保timer.tick启动。一旦我开始工作,它将被和sql语句替换。您必须创建一个方法来构建所有动态控件,然后在每次启动计时器时调用它,否则如上所述,所有控件都将丢失。我假设这一切都包装在updatepanel中,对吗?计时器本身和标签都在更新面板中。图像按钮位于一个单独的更新面板中,它在自己的更新面板中创建自己的动态控件。此外,它甚至不是在.tick之后不会触发的动态控件。这是任何按钮。页面上的静态图像按钮也不会启动。