使用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阶段失败了。
我错过了什么?
首先,测试你的功能,比如
TextBox txtAddress = (TextBox)FindControl("tbxReturnAddress");
或
你可以试试这样,
TextBox txtAddress = (TextBox)Page.FindControl("tbxReturnAddress");
编辑
如果您的文本框位于UpdatePanel
、中
TextBox txtAddress = (TextBox)UpdatePanel1.FindControl("tbxReturnAddress");