Bonjour,
J'ajoute dynamiquement des textbox munies d'un autocomplete extender a une webform sur le clic d'un bouton, pas de problemes lorsque j'ajoute les textbox mais pour les autocomplete extender j'ai l'erreur suivante :
Extender controls may not be registered after PreRender.
Lors du clic sur le boutons j'ajoute les controles a une liste de controles qui est restituees dans un placeholder lors du postback puisque sinon le placeholder ne garde pas les controles.
Merci beaucoup d'avance a tous ceux qui peuvent m'aider.
Voici mon code :
protected void Button_AddPI_Click(object sender, EventArgs e)
{
TextBox txt_name = new TextBox();
txt_name.ID = "ctl" + (list_controlsPI.Count + 1).ToString();
txt_name.Style.Add("margin-right", "90px");
txt_name.Style.Add("margin-left", "10px");
txt_name.Width = 150;
AutoCompleteExtender autocomplete_txtName = new AutoCompleteExtender();
autocomplete_txtName.MinimumPrefixLength = 1;
autocomplete_txtName.UseContextKey = true;
autocomplete_txtName.ServiceMethod = "GetCompletionList";
autocomplete_txtName.ID = "ctl" + (list_controlsPI.Count + 2).ToString();
autocomplete_txtName.TargetControlID = "ctl" + (list_controlsPI.Count + 1).ToString();
TextBox txt_firstname = new TextBox();
txt_firstname.ID = "ctl" + (list_controlsPI.Count + 3).ToString();
txt_firstname.Width = 150;
txt_firstname.Style.Add("margin-left", "10px");
AutoCompleteExtender autocomplete_txtFirstName = new AutoCompleteExtender();
autocomplete_txtFirstName.MinimumPrefixLength = 0;
autocomplete_txtFirstName.UseContextKey = true;
autocomplete_txtFirstName.ServiceMethod = "GetCompletionList2";
autocomplete_txtFirstName.BehaviorID = "AutoCompleteBehaviorFirstName"+list_controlsPI.Count.ToString();
autocomplete_txtFirstName.ID = "ctl" + (list_controlsPI.Count + 4).ToString();
autocomplete_txtFirstName.TargetControlID = "ctl" + (list_controlsPI.Count + 3).ToString();
list_controlsPI.Add(new LiteralControl("Co-Investigator's name"));
list_controlsPI.Add(txt_name);
list_controlsPI.Add(autocomplete_txtName);
list_controlsPI.Add(new LiteralControl("Co-Investigator's first name"));
list_controlsPI.Add(txt_firstname);
list_controlsPI.Add(autocomplete_txtFirstName);
list_controlsPI.Add(new LiteralControl("<br/>"));
list_controlsPI.Add(new LiteralControl("<br/>"));
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
foreach (Control ctrl in list_controlsPI)
{
PlaceHolder_OtherPI.Controls.Add(ctrl);
}
}
}