3

複数のテキストボックスがあり、プログラムで同じ方法で入力したいと考えています。

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>    
    <asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="500">
        <ProgressTemplate>
            <div id="FreezeUpdate" class="FreezePaneOn">
               <div id="InnerFreezePane" class="InnerFreezePane gradient"><asp:Literal ID="litProgress" runat="server" Text="<%$ Resources:LocalizedText, freezeMsg_ProcessingPleaseWait %>"></asp:Literal></style></div>
            </div>
        </ProgressTemplate>
    </asp:UpdateProgress>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <asp:TextBox ID="tbxCollectionAddress" runat="server" TextMode="MultiLine" ReadOnly="True" CssClass="address"></asp:TextBox>
        <asp:TextBox ID="tbxReturnAddress" runat="server" TextMode="MultiLine" ReadOnly="True" CssClass="address"></asp:TextBox>
    </asp:UpdatePanel>
</asp:Content>

それから方法...

protected void PopulateAddress(string txtTextbox, Address adrAddress)
    {
        TextBox txtAddress = (TextBox)FindControl(txtTextbox);

        txtAddress.Text = "Hello World";

    }

以下のようにこのメソッドを呼び出すと...

PopulateAddress("tbxReturnAddress", CollectionAddress);

...例外が発生します...

System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

...そしてそれはtxtAddress.Text = "Hello World"; 線を強調します。

フォームに入力する必要がある3つの個別のアドレスがあるため、メソッドでこのようにしたいと思いますが、アドレスオブジェクトとテキストボックスをフィードして、再利用可能なコードを使用してそれを実行したいと思いますid ですが、findcontrol の段階で落ち込んでいます。

私は何が欠けていますか?

4

1 に答える 1

3

まず、関数が好きかどうかをテストします

  TextBox txtAddress = (TextBox)FindControl("tbxReturnAddress");

また

あなたはこのように試すことができます、

  TextBox txtAddress = (TextBox)Page.FindControl("tbxReturnAddress");

編集

テキストボックスが にある場合UpdatePanel

  TextBox txtAddress = (TextBox)UpdatePanel1.FindControl("tbxReturnAddress");
于 2013-08-08T09:25:50.530 に答える