使用FindControl填充文本框

本文关键字:文本 填充 FindControl 使用 | 更新日期: 2023-09-27 18:26:47

我有多个文本框,我想用相同的方法用程序填充它们。

<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:对象引用未设置为对象的实例。

并且它高亮显示CCD_ 1线。

我想用这个方法这样做,因为我需要在表单上填充三个单独的地址,但我想尝试使用可重复使用的代码,通过输入地址对象和文本框id来完成,但我只是在findcontrol阶段失败了。

我错过了什么?

使用FindControl填充文本框

首先,测试你的功能,比如

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

你可以试试这样,

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

编辑

如果您的文本框位于UpdatePanel、中

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