2012-08-09 72 views
0

FindControl函數有問題。問題是如下: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已沒有工作,也找不到該控件。在任何時候我都錯了嗎? 在此先感謝。

+0

只是出於好奇;既然你的RequiredFieldValidator上有runat =「server」,爲什麼你不能直接在代碼隱藏中引用它呢? – 2012-08-09 14:37:04

+0

@ Jim B:是的,你說得對,我只是忘記了。現在它完美地工作。謝謝 – Ragnarsson 2012-08-09 14:51:14

回答

1

根據您的來源有限,你應該能夠簡化代碼背後方法:

protected void OnCheckedChangedMethod(object sender, EventArgs e) 
{    
    this.RequiredFieldValidator1.Visible = this.Extern.Checked; 
} 

應該沒有必要使用FindControl()。

當您輸入「this。」時,如果在您的智能感知中看不到RequiredFieldValidator1,並且假設您使用的是ASP.NET 2.0或更高版本,請檢查您的VS.NET警告,以查看您的.aspx是否有帶有關聯的「設計器文件生成失敗」的警告消息。如果是這樣,您必須糾正警告。

+0

謝謝單,我只是忘記了我可以直接作爲參考。謝謝 – Ragnarsson 2012-08-09 14:50:13

3

ASP.NET爲您創建了一個字段,因爲它位於頁面中的Contentthis.RequiredFieldValidator1之內。

FindControl方法是這樣的(發現它在母版頁中的內容面板):

Control ctr = Master.FindControl("MainContent") 
    .FindControl("RequiredFieldValidator1"); 
+0

嗨,謝謝Mudu,現在它可以和Master一起工作。但我在下面的單解決方案,這很簡單。謝謝 – Ragnarsson 2012-08-09 14:48:52

+0

不客氣。是的,我也會推薦你,Shan的解決方案更安全。 – 2012-08-10 14:16:00

+0

謝謝,夥計。我想知道爲什麼沒有人在解釋如何使用FindContro()時不考慮使用母版頁。再次感謝你。 – 2017-05-04 14:18:32

相關問題