我有一个关于FindControl函数的问题。问题如下:
aspx:
<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server">
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>
<table class="inputTable">
<tr><td>
<asp:CheckBox ID="Extern" AutoPostBack="True" OnCheckedChanged="OnCheckedChangedMethod" runat="server" />
</td><td>Externes Unternehmen</td></tr>
<tr>
<td>
<asp:TextBox ID="Firmierung" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="Firmierung" Display="Dynamic"
ErrorMessage="RequiredFieldValidator"
Text="Bitte geben Sie die Firmierung ein."></asp:RequiredFieldValidator>
</td>
</tr>
</table>
aspx.cs:
protected void OnCheckedChangedMethod(object sender, EventArgs e)
{
if (Extern.Checked)
{
Control ctr = FindControl("RequiredFieldValidator1");
if (ctr != null)
{
ctr.Visible = false;
}
}
else
{
}
}
但是FindControl不起作用,它找不到那个控件。我在任何时候都错了吗?提前谢谢。
发布于 2012-08-09 14:41:46
基于您有限的资源,您应该能够简化您的代码幕后方法,以:
protected void OnCheckedChangedMethod(object sender, EventArgs e)
{
this.RequiredFieldValidator1.Visible = this.Extern.Checked;
}
应该不需要使用FindControl()。
当您键入"this.“时,如果您没有看到RequiredFieldValidator1出现在您的ASP.NET中,并且假设您使用的是intellisense 2.0或更高版本,请检查您的VS.NET警告,看看您的.aspx是否有一条与”生成设计器文件失败“相关联的警告消息。如果是这样,则必须更正该警告。
发布于 2012-08-09 14:38:20
ASP.NET会为您创建一个字段,因为它位于页面中的Content
:this.RequiredFieldValidator1
内。
FindControl
方法如下所示(在母版页的内容面板中找到它):
Control ctr = Master.FindControl("MainContent")
.FindControl("RequiredFieldValidator1");
https://stackoverflow.com/questions/11885735
复制相似问题