在page_Init
上,我创建UpdatePanel
个数量,并在每个UpdatePanel
个Panel
内创建TextBoxe
个。然后我使用此面板继续进行动态添加其他控件。例如,我在每个面板中添加了Button
和AddressOf
的数量。此外,我将click事件绑定到动态创建的所有按钮。 Public Class Events
Inherits System.Web.UI.Page
Public Sub Dynamic_Btn_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim SQL As New SQLControl
Dim sTempPanel1 As UpdatePanel = FindControl("MyUpdatePanel1")
MsgBox("MyUpdatePanel1" & ":" & (sTempPanel1 Is Nothing))
End Sub
End Class
这些点击事件位于另一个名为 Events 的类中。在Event类的Sub中,当我尝试查找控件时,它似乎不起作用。
以下是EVENT类
中的代码FindControl
注意:如果相同的上面的子被复制/粘贴到页面类的后面的代码,它就可以工作。
我知道我在这里错过了一些链接。可能是{{1}}未被引用应该搜索的页面。
答案 0 :(得分:0)
很清楚为什么它不起作用 - 您正在运行属于FindControl
类的Events
。但Event
课程上没有按钮。为什么选择这样的架构 - 这是另一个问题。
如何让按钮所在的面板调用
Dim b as Button = DirectCast(sender, Button)
Dim p as UpdatePanel = = DirectCast(b.Parent, UpdatePanel)
还要记住:方法[FindControl]仅搜索页面的直接或顶级容器;它不会递归地搜索页面中包含的命名容器中的控件。
但如果你真的不知道控件的确切位置,你可以编写递归函数来找到它
如果你知道你有
-- Page
-- UpdatePanel
-- Panel
-- Button
你可以硬编码
button.Parent.Parent ' <-- this is your update panel