我正在尝试将两个变量设置为两个相应的控件,而我当前的代码无效。什么是正确的语法?
ascx代码:
<ul>
<li runat="server" id="searchListItem">
<a href="javascript:void(0)">Search Keywords</a>
</li>
</ul>
<input runat="server" id="searchBox" type="text" />
ascx.vb代码:
Private Sub Page_Load (...
`other code
Dim jobsLi As HtmlGenericControl
Dim jobsBox As HtmlGenericControl
jobsLi = CType(Page.FindControl("searchListItem"), HtmlGenericControl)
jobsBox = CType(Page.FindControl("searchBox"), HtmlGenericControl)
`other code
End Sub
当我单步执行代码jobsLi
并且jobsBox
仍为nothing
时。
答案 0 :(得分:1)
.FindControl()
不会递归执行搜索,因此解决此问题的一种方法是编写自定义方法来执行此操作。
围绕这些方面的事情:
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}