Controles não aparecem no controle de usuário criado dinamicamente
-
02-07-2019 - |
Pergunta
Eu tenho o controle usuário chamado DateTimeUC que tem duas caixas de texto em seu marcação:
<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox>
<asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>
Eu estou criando dinamicamente este controle em outro controle de usuário:
Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
DateTimeUC uc = new DateTimeUC();
uc.ID = parameter.Name;
return uc;
}
Mas quando eu processar a página, DateTimeUC torna nada. Eu verifiquei isto assim:
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
StringBuilder builder = new StringBuilder();
StringWriter swriter = new StringWriter(builder);
HtmlTextWriter hwriter = new HtmlTextWriter(swriter);
base.Render(hwriter);
string s = builder.ToString();
}
S está vazio e Controls.Count é 0. O que estou fazendo de errado?
Solução
Você deve usar o método LoadControl( "your_user_control_app_relative_path.ascx" )
em vez de "DateTimeUC uc = new DateTimeUC ();"
Outras dicas
Eu corri para este problema sozinho uma volta enquanto. Você precisa usar o método LoadControl (). Confira desta página nele.
Eu acho que você quer adicionar seu controle para o da página de formulário e não o próprio formulário.
seu código:
Controls.Add( GenerateDateTime(parameter) );
tentar:
Page.Form.Controls.Add( GenerateDateTime(parameter) );