我想在VB中为我的网站编写一段代码,但VB似乎无法找到一个按钮。代码有找到它的方法吗?在VB.NET中找到一个asp:按钮
我知道它在哪里。 Loginview>登录> LoginTemplate。如何让VB.NET指向那个位置?
我想在VB中为我的网站编写一段代码,但VB似乎无法找到一个按钮。代码有找到它的方法吗?在VB.NET中找到一个asp:按钮
我知道它在哪里。 Loginview>登录> LoginTemplate。如何让VB.NET指向那个位置?
由于该按钮位于模板中,因此您需要使用FindControl方法。
例如,如果您有类似这样的标记:
<asp:LoginView ID="loginview1" runat="server">
<LoggedInTemplate>
<asp:Button ID="btn1" runat="server" />
</LoggedInTemplate>
</asp:LoginView>
然后,在你的后台代码,你需要像这样引用它:
Button btn = loginview1.FindControl("btn1") as Button;
if (btn != null)
{
// do whatever you need here
}
只是以备将来参考,(我没有尝试Nate的代码)有时你必须搜索.Parent
中找到的控件,特别是当试图在容器中查找控件时,或者更糟糕的是,在容器中,在容器中,在容器中等等时。
或搜索子.Controls,因为第二次阅读我不知道这是一个父位置或正在搜索控件的子位置。如果你在ascx中,通常你正在寻找父母,如果你在一个页面中,一般你正在寻找孩子。
这里是自动代码转换器:http://converter.telerik.com/为C#到VB.NET
private static Control FindControl(Control container,string id)
{
if (container.FindControl(id) != null)
return container.FindControl(id);
foreach (Control possibility in container.Controls)
{
if (container.FindControl(id) != null)
return container.FindControl(id);
if(possibility.Controls.Count>0)
{
Control childPossibility = FindControl(possibility, id);
if (childPossibility != null)
return childPossibility;
}
}
//throw new InvalidOperationException("Couldn't find it!");
return null;
}
我希望这是暗示的解决方案的,要真正钉一个解决方案,我需要更多的源代码。在VB.NET
那么如果Nate的代码不起作用,你建议我怎么做?因为它不。 – BioXhazard 2010-06-14 12:23:39
TryCast
功能是操作者as
在C#模拟:
Dim btn As Button = TryCast(Me.FindControl("Button1"), Button)
If btn IsNot Nothing Then
' use btn
End If
参见this topic和this。那么你确定你正在搜索当前的活动模板吗?
我从这里得到一个错误。 投射算子中的语法错误;需要用逗号分隔的两个参数。 – BioXhazard 2010-06-14 12:26:21
@Andrew:忘记了第一行中的支架 – abatishchev 2010-06-14 12:27:40
我调试了代码以停止并显示该行的值。 btn =无。所以它仍然没有找到控制。 – BioXhazard 2010-06-14 12:32:43
您是否在您的网站上登录过?如果您未登录,您的按钮将不会呈现在您的页面上。 (所以你将不能够使用的FindControl找到它。)
Nate的代码是正确的,只要你的LoginView不是另一个容器内(如母版页或一个占位符。)
暗淡BTN As Button = Ctype(loginview1.FindControl(“btn1”),Button)
如果这不起作用,请在页面指令中添加trace =“true”。重新加载页面并查看控制树下的底部。你应该看到这样一行:
loginview1 $ BTN1 System.Web.UI.WebControls.Button
不好意思,刚才意识到你正在使用VB;我列出的代码是用于C#的,因此会有一些语法更改。 – 2010-06-14 12:08:34
你知道更改吗?我不确定如何切换到VB。 它更像是logintemplate在 –
BioXhazard
2010-06-14 12:17:09
里面不,它仍然找不到控件。 – BioXhazard 2010-06-14 12:21:22