0

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 は機能しませんでした。そのコントロールを見つけることができませんでした。私はいつでも間違っていましたか?前もって感謝します。

4

2 に答える 2

4

Contentページの:内にあるため、ASP.NET によってフィールドが作成さthis.RequiredFieldValidator1れます。

方法は次のFindControlようになります (マスター ページのコンテンツ パネルで見つけます)。

Control ctr = Master.FindControl("MainContent")
    .FindControl("RequiredFieldValidator1");
于 2012-08-09T14:38:20.400 に答える
1

限られたソースに基づいて、コード ビハインド メソッドを次のように単純化できるはずです。

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

FindControl() を使用する必要はありません。

「this.」と入力しても RequiredFieldValidator1 が IntelliSense に表示されず、ASP.NET 2.0 以降を使用していると仮定した場合は、VS.NET の警告をチェックして、.aspx に警告メッセージが含まれているかどうかを確認します。関連付けられている「デザイナー ファイルの生成に失敗しました」。その場合は、警告を修正する必要があります。

于 2012-08-09T14:41:45.850 に答える