J'ai une liste déroulante contenant quelques choix. Basé sur la sélection de l'utilisateur, j'ai besoin de créer des contrôles dynamiques et les rendre sur le formulaire. Je comprends que les contrôles dynamiques doivent être créés dans OnInit ou dans CreateChildControls afin que ViewState pour ces contrôles dynamiques soit restauré correctement par le moteur d'exécution. Le problème est que je ne parviens pas à obtenir la valeur SelectedValue de la liste déroulante dans OnInit ou CreateChildControls puisque ViewState n'a pas encore été restauré pour la liste déroulante.Création de contrôles dynamiques basés sur la valeur sélectionnée d'un contrôle statique
Est-il possible d'obtenir la sélection en cours afin que je puisse créer les contrôles dynamiques en fonction de la sélection d'utilisateur et ajoutez la page correctement
EDIT: Le balisage se présente comme suit:
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" AppendDataBoundItems="true">
<asp:ListItem Text="(Select Color)" Value="" />
<asp:ListItem Text="Red" Value="Red" />
<asp:ListItem Text="Green" Value="Green" />
<asp:ListItem Text="Blue" Value="Blue" />
</asp:DropDownList>
<asp:PlaceHolder ID="plHolder" runat="server" />
</div>
</form>
et voici le code derrière:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void CreateChildControls()
{
base.CreateChildControls();
TextBox tb = new TextBox();
if (ddl.Text != "")
{
tb.Text = ddl.Text;
if (Session["id"] != null)
{
string id = Session["id"].ToString();
tb.ID = id;
}
else
{
Session["id"] = tb.ID = Guid.NewGuid().ToString().Replace("-", "");
}
plHolder.Controls.Add(tb);
}
}
}
Sur la ligne "tb.Text = ddl.Text;" J'espère obtenir la sélection en cours et en fonction de cela définir la valeur de la propriété de texte pour le contrôle dynamique. Mais la sélection actuelle n'a pas encore été définie depuis OnInit.
vous devez poster un code pour vérifier où est le problème, Selon votre déclaration, il semble OK. –
J'ai ajouté du code pour capturer l'essence de ce que j'essaie de faire –