begin process at 2012 02 11 15:03:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

PostBack

 > 

Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

jeudi 29 juin 2006 à 10:54:48 | Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

zarzar

j'ai un problème, j'ai vu qu'il était fréquent mais je ne parviens pas à appliquer les solutions adéquates trouvées

je crée des contrôles dynamiques que je place dans un placeholder
tout s'affiche bien une 1ère fois, mais au clic sur un bouton (provoquant donc un postback), je perds tout

pourtant, suite à ce que j'ai lu sur le sujet, j'appelle ma méthode de génération du formulaire dans la méthode Page_Init
je suis cependant obligé de "protéger" ceci avec un boolean pour ne passer qu'une seule fois (sinon je me tappe une exception disant en gros : controle déjà existant avec le même ID)
extrait :

    protected void Page_Init(object sender, EventArgs e)
    {
            if (genForm) // ce bool est init à true
            {
                ...
                generateForm(); // méthode qui comporte les "PlaceHolder1.Controls.Add(...)"
                ....
                genForm = false; // bool passe à false, j'ai mis ça par rapport à ce que je disais plus haut...
            }
    }



pas moyen que ça marche pr le moment
tout aide serait la bienvenue..... (vraiment)
merki
jeudi 29 juin 2006 à 11:01:36 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

preti

Pourquoi tu n'utilises pas le page_Load ??
jeudi 29 juin 2006 à 11:04:24 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

zarzar

essayé aussi, même comportement
jeudi 29 juin 2006 à 11:07:47 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

preti

dans ton page load tu as donc juste l appel à ta fonction cela devrait fonctionner... si tu mets juste cette appelle il t'affiche rien ?? tu as essayé de faire du debugging afin de voir si il rentre bien dans ta fonction ??
jeudi 29 juin 2006 à 11:10:26 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

zarzar

si je fais qqch du style :
    protected void Page_Load(object sender, EventArgs e)
    {
        generateForm();
    }


j'ai mon formulaire une 1ère fois, puis au clic :
Plusieurs contrôles avec le même ID 'lbSfField0' ont été trouvés.  etc....
jeudi 29 juin 2006 à 11:12:31 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

preti

peux tu me donner ta fonction ??
jeudi 29 juin 2006 à 11:20:36 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

zarzar

attention elle est pas petite !
en fait pr détailler, je crée des HtmlTable (avec des Rows puis des Cells) et dedans je dépose mes contrôles asp
certains objets (exdescribeSObjectResults sont dans mon code en static, je l'ai tjs)

    private void generateForm()
    {

        DropDownList ddl;
        Label lb;
        CheckBox cbMandatory;
        TextBox tbDefaultValue;
        DropDownList ddlDefaultValue;
        CheckBox cbDefaultValue;

        HtmlTable tbl;
        HtmlTableRow row;
        HtmlTableCell cell;



        for (int x = 0; x < describeSObjectResults.Length; x++)
        {
            tbl = new HtmlTable();
            row = new HtmlTableRow();
            cell = new HtmlTableCell("th");
            cell.Controls.Add(new LiteralControl("Salesforce field"));
            row.Cells.Add(cell);
            cell = new HtmlTableCell("th");
            cell.Controls.Add(new LiteralControl("File field"));
            row.Cells.Add(cell);
            cell = new HtmlTableCell("th");
            cell.Controls.Add(new LiteralControl("Mandatory"));
            row.Cells.Add(cell);
            cell = new HtmlTableCell("th");
            cell.Controls.Add(new LiteralControl("Default value"));
            row.Cells.Add(cell);

            tbl.Rows.Add(row);

            for (int i = 0; i < describeSObjectResults[x].fields.Length; i++)
            {
                if ((describeSObjectResults[x].fields[i].createable || describeSObjectResults[x].fields[i].name == "Id") && !fieldsToBeHiddenAl.Contains(describeSObjectResults[x].fields[i].name))
                // (Sf field is creatable or is an ID) and not in the "ToBeHidden" list
                {
                    row = new HtmlTableRow();


                    // Salesforce field
                    lb = new Label();
                    lb.ID = "lbSfField" + i;

                    if (describeSObjectResults[x].fields[i].label.EndsWith("ID") && describeSObjectResults[x].fields[i].name != "Id")
                    {
                        lb.Text = describeSObjectResults[x].fields[i].label.Replace(" ID", "");
                    }
                    else
                    {
                        lb.Text = describeSObjectResults[x].fields[i].name;
                    }
                    cell = new HtmlTableCell();
                    cell.Width = "150px";
                    cell.Align = "right";
                    cell.Controls.Add(lb);
                    row.Cells.Add(cell);
                    lb.Dispose();

                    // File field
                    ddl = new DropDownList();
                    ddl.ID = "ddlFileFields" + i;
                    ddl.Items.Add("-- none selected --");
                    for (int j = 0; j < fileFields.Count; j++)
                    {
                        ddl.Items.Add(fileFields[j].ToString());
                    }

                    cell = new HtmlTableCell();
                    cell.Controls.Add(ddl);
                    row.Cells.Add(cell);
                    ddl.Dispose();

                    // Mandatory
                    cbMandatory = new CheckBox();
                    cbMandatory.ID = "cbMandatory" + i;
                    cell = new HtmlTableCell();
                    cell.Align = "center";
                    cell.Controls.Add(cbMandatory);
                    row.Cells.Add(cell);
                    cbMandatory.Dispose();

                    // je t'épargne ici, un gros switch qui n'apporterait rien au sujet                  

                    row.Cells.Add(cell);

                    //
                    tbl.Rows.Add(row);
                }
            }
            PlaceHolder1.Controls.Add(tbl);
        }
    }
jeudi 29 juin 2006 à 12:45:29 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonjour,

il faut effectivement mettre tout dans le page_init pour construire l'arbre des controles convenablement !

Par contre je ne comprend pas le problème, à quoi sert le boolean ? t'es sur qu'il est à true lors du deuxieme passage ? ta fonction est bien appellé, vérifie en mettant un point d'arret


Cyril - MVS - MCP
jeudi 29 juin 2006 à 14:13:56 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

zarzar

mais si je mets juste
protected void Page_Init(object sender, EventArgs e)
    {
        generateForm();
    }




la deuxième fois il repasse dans generateForm, et ensuite je me prends
Plusieurs contrôles avec le même ID 'lbSfField0' ont été trouvés. FindControl requiert que les contrôles aient des ID uniques.

(lbSfField0 c'est le mieux controle)

c'est logique en fait je trouve

dnc le truc super bizarre, c'est qu'il "garde" les controles (au sens ou si je repasse dans ma génération, il ne peut pas recréer des controles avec les memes id), mais il veut pas me les afficher
apres le postback le placeholder est vide (count à 0)

c'est dingue
trop mal foutu qd meme ces controles dynamiques, non ?
jeudi 29 juin 2006 à 16:51:53 | Re : Contrôles dynamiques dans un PlaceHolder qui disparaissent au PostBack

zarzar

Réponse acceptée !
    problème résolu
il y avait un soucis dans les id des controles générés
un détail mais qui faisait tout planter au 2ème affichage
merci bcp pr l'aide

1 2

Cette discussion est classée dans : méthode, contrôles, dynamiques, postback, placeholder


Répondre à ce message

Sujets en rapport avec ce message

Contrôles dynamiques [ par ja001net ] Bonjour, J'aimerais créer des contrôles serveur dynamiquement en fonction d'un chiffre entré dans un précédent formulaire (créer 5 TextBox p Calendrier OutLook [ par groovy ] Bonjour,Quelqu'un connaîtrait-il une méthode permettant d'envoyer depuis une page ASP un rendez-vous OutLook à un utilisateur. Celui-ci n'aurait qu'à Datagrid et champs dynamiques : mémoire ? [ par theoorleans45 ] Bon, j'ai encore un soucis de programmation. Je vais essayer d'être précis et bref dans la description de ce que je veux et ce que j'ai fait.Dans une Avis Authentification Utilisateur: Méthode [ par liliemumue ] BonjourToujorus su r mon site Web , je m'apprête àprésent à intégrer l'authetification utilisateur afin que mes visiteurs puissent créer des comptes e PlaceHolder et UserControl [ par edokt ] Salut tout le monde J'ai un petit problem que je comprends pas J'ai un user control que je charge dans un placeholder en utilisant un bouton "Charger" Comment gérer la localisation des login, createuserwizards... [ par mdemo ] Bonjour,Mon site utilise des ressources locales et globales pour gérer plusieurs langues. Je viens de mettre en place tout l'aspect login, passwordrec Treeview & PostBack [ par oxayotl ] Bonjour,j'aurai voulu savoir s'il était possible et si oui comment désactiver les liens correspondant aux checkbox d'un treeview. Conseils sur accès aux données [ par mdemo ] Bonjour,Je travaille sur un site qui risque d'héberger pas mal de données uploadées par les membres. Ces membressont repérés par le UserId généré par GetCallBackResult() [ par cyclotor ] Bonjour à tous,J'essai d'implémenter l'interface ICallbackEventHandler et ça marche très lorsque je veux rafraîchir un composant WEB de ma form. Mais action sur le postback [ par wally88 ] Bonjour, j'ai une dropdownlist et souhaiterais faire une action lors du postback. Et forcement je trouve pas :/ Une petite aide? :DMerci.


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales