2013-08-08 2 views
2

У меня есть несколько текстовых полей, и я хочу программно заполнить их одним и тем же методом.Заполнение текстового поля с помощью FindControl

<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";.

Я хотел бы сделать это так, используя этот метод, потому что есть три отдельных адреса, которые мне нужно заполнить в форме, но я хотел бы попробовать использовать повторно используемый код, чтобы сделать это, подав адрес объект и идентификатор текстового поля, но я падаю только на этапе findcontrol.

Что мне не хватает?

+0

делает эту помощь: http://msdn.microsoft.com/en-us/library/y81z8326.aspx – mcalex

ответ

3

Во-первых, проверить свои функции любит

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

или

Вы можете попробовать это нравится,

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

Редактировать

Если текст-б бык в UpdatePanel,

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

я получаю тот же результат :( – Stuart

+0

Можете ли вы показать мне, где 'tbxReturnAddress'? – zey

+0

Я обновил вопрос с помощью части html ... Имеет ли значение, что текстовое поле существует в панели обновления? – Stuart

Смежные вопросы