cs_zarzar
Messages postés38Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 7 juillet 2006
-
29 juin 2006 à 10:54
lapinroi
Messages postés1Date d'inscriptionmardi 4 juillet 2006StatutMembreDernière intervention 4 juillet 2006
-
4 juil. 2006 à 19:47
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
preti
Messages postés53Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 7 septembre 2006 29 juin 2006 à 11:07
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 ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_zarzar
Messages postés38Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 7 juillet 2006 29 juin 2006 à 11:20
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 (ex
describeSObjectResults sont dans mon code en static, je l'ai tjs)
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();
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 29 juin 2006 à 12:45
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
cs_zarzar
Messages postés38Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 7 juillet 2006 29 juin 2006 à 14:13
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 ?