Question

est mon scénario:
J'ai une page avec un espace réservé. la page ajoute dynimcally différents types de contrôles (nous wan't pour afficher certaines données - obtenir l'identifiant via querystring ou postback, comme nous avons aussi un arbre) à cet espace réservé
. les contrôles ajoutés tous, plus ou moins, contiennent une zone de texte (nom de l'élément d'affichage), la case (à l'état actif de l'élément d'affichage) et un bouton de sauvegarde qui déclenche un procédé dans ce webcontrol.

maintenant mon problème est vraiment évident: comme je suis d'ajouter le contrôle dynamique (! et pour toutes les conditions: Postback et Postback), la sauvegarde méthode dans le contrôle ainsi ajouté, ne sera pas le feu - peu importe ce que je fais ...

Je suis simplement stupide pour obtenir l'astuce:)

quelques arrière-scène-infos (workflow):

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.Page.IsPostBack)
    {
        this.SelectedElement = SomeMagicMethod();
    }
}

protected void NodeSelected(object sender, TreeViewNodeEventArgs e)
{
    this.SelectedElement = SomeOtherMagicMethod();
}

protected override void OnLoadComplete(EventArgs e)
{
    // we have to take this life-cycle!
    if (this.SelectedElement!= null)
    {
        this.DisplayElement();
    }
}

private void DisplayElement()
{
    var UC = this.LoadControl(UCPath) as DataTypeUC;
    if (UC == null)
    {
        return;
    }

    UC.ID = EditCampaignFolderUCID;
    UC.SetData(this.SelectedElement);
    UC.DataBind();
    this.phContent.Controls.Add(UC);
}
Était-ce utile?

La solution 2

le truc est: reinstatiate tout oninit, et dans l'ordre que le viewstate a été sauvé à la dernière requête ... délicate délicate

Autres conseils

Tout en ajoutant dynamiquement des contrôles, vous aurez également à câbler l'événement du bouton de sauvegarde à chaque fois (c'est, si le bouton d'enregistrement est généré dynamiquement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top