Des controles fous alliés à se taper la tête sur un mur...
6 réponses
Delf
Bonjour.
Je suis confronté à un problème ahurrissant.
Voici un exemple simple.
J'ai une page ASP.NET 'page.aspx'.
Cette page se compose d'un 'PlaceHolder' dans lequel je place N
controles 'Ctrl.ascx'.
Un controle Ctrl.ascx se compose d'un Label et d'un LinkButton 'Remove'.
Lors de l'appel à page.aspx :
- [*] Je vide le PlaceHolder,
- je regarde si la variable de session 'S' existe (Cette session joue
le rôle de cache).
1. elle n'existe pas, je récupère des données de mon SGBD et je les
mets dans S,
2. elle existe, j'en récupère les données.
- Via les données précédemment récupérées, je créé des Ctrl que
j'insère dans le PlaceHolder.
Jusque là, tout va bien.
Supposons que 3 Ctrl s'affichent.
Je supprime le 1°.
- Page_Load() de page.aspx (-> je recréé les 3 précédents Ctrl)
- je passe dans la méthode 'Remove' du 1° Ctrl, je retire l'objet
correspondant du SGBD et de la session S et je refais une redirection
vers page.aspx (goto [*])
- Page_Load() de page.aspx récupère la session S, soit, 2 objets
restants et les affichent via Ctrl.
N'apparait alors que les 2° Ctrl restant.
Ok.
Puis je clique sur le 1° Ctrl et là... c'est le 2° Ctrl qui est effacé :\
Si par contre je clique sur le 2°, rien ne se passe, mais au prochain
coup, celà refonctionnera qq soit le Ctrl à effacer...
Je comprends rien... apparemment, lors du 2° effacement, le LinkButton
et le Ctrl ne sont plus en phase... un problème d'ID ? Je ne sais plus
quoi faire ! Je m'en remets à vous.
Tu devrais nous poster ton code pour qu'on puisse reproduire sur nos machines, ça nous aiderait à comprendre d'ou vient ce comportement.
-- Aurélien Norie Microsoft France -------------------- Merci de bien vouloir répondre à ce message dans le newsgroup où il a été posté. Je le consulte régulièrement.
"Delf" a écrit dans le message de news: 4356090f$0$675$
Delf wrote:
[..]
Personne ne peut m'aider ?
-- Delf
Bonjour Delf,
Tu devrais nous poster ton code pour qu'on puisse reproduire sur nos
machines, ça nous aiderait à comprendre d'ou vient ce comportement.
--
Aurélien Norie
Microsoft France
--------------------
Merci de bien vouloir répondre à ce message dans le newsgroup où il a été
posté. Je le consulte régulièrement.
"Delf" <strafer@online.fr.nospam> a écrit dans le message de news:
4356090f$0$675$626a14ce@news.free.fr...
Tu devrais nous poster ton code pour qu'on puisse reproduire sur nos machines, ça nous aiderait à comprendre d'ou vient ce comportement.
-- Aurélien Norie Microsoft France -------------------- Merci de bien vouloir répondre à ce message dans le newsgroup où il a été posté. Je le consulte régulièrement.
"Delf" a écrit dans le message de news: 4356090f$0$675$
Delf wrote:
[..]
Personne ne peut m'aider ?
-- Delf
Patrice
Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et vérifie aussi peut-être le nombre de contrôles dans ta collection. Pour l'instant j'ai la vague impression que l'on a un pb en cas de postback et que cela marche si l'on fait un nouveau "get" ?
Si tu postes du code comme demandé par Aurélien simplifie le au maximum avant (et en général cela permet aussi de trouver le problème) pour que l'on puisse mieux suivre la logique...
-- Patrice
"Delf" a écrit dans le message de news:435349e9$0$4329$
Bonjour.
Je suis confronté à un problème ahurrissant.
Voici un exemple simple.
J'ai une page ASP.NET 'page.aspx'.
Cette page se compose d'un 'PlaceHolder' dans lequel je place N controles 'Ctrl.ascx'.
Un controle Ctrl.ascx se compose d'un Label et d'un LinkButton 'Remove'.
Lors de l'appel à page.aspx :
- [*] Je vide le PlaceHolder,
- je regarde si la variable de session 'S' existe (Cette session joue le rôle de cache).
1. elle n'existe pas, je récupère des données de mon SGBD et je les mets dans S, 2. elle existe, j'en récupère les données.
- Via les données précédemment récupérées, je créé des Ctrl que j'insère dans le PlaceHolder.
Jusque là, tout va bien.
Supposons que 3 Ctrl s'affichent.
Je supprime le 1°.
- Page_Load() de page.aspx (-> je recréé les 3 précédents Ctrl) - je passe dans la méthode 'Remove' du 1° Ctrl, je retire l'objet correspondant du SGBD et de la session S et je refais une redirection vers page.aspx (goto [*]) - Page_Load() de page.aspx récupère la session S, soit, 2 objets restants et les affichent via Ctrl.
N'apparait alors que les 2° Ctrl restant. Ok.
Puis je clique sur le 1° Ctrl et là... c'est le 2° Ctrl qui est effacé :
Si par contre je clique sur le 2°, rien ne se passe, mais au prochain coup, celà refonctionnera qq soit le Ctrl à effacer...
Je comprends rien... apparemment, lors du 2° effacement, le LinkButton et le Ctrl ne sont plus en phase... un problème d'ID ? Je ne sais plus quoi faire ! Je m'en remets à vous.
Merci.
-- Delf
Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et
vérifie aussi peut-être le nombre de contrôles dans ta collection.
Pour l'instant j'ai la vague impression que l'on a un pb en cas de postback
et que cela marche si l'on fait un nouveau "get" ?
Si tu postes du code comme demandé par Aurélien simplifie le au maximum
avant (et en général cela permet aussi de trouver le problème) pour que l'on
puisse mieux suivre la logique...
--
Patrice
"Delf" <strafer@online.fr.nospam> a écrit dans le message de
news:435349e9$0$4329$626a54ce@news.free.fr...
Bonjour.
Je suis confronté à un problème ahurrissant.
Voici un exemple simple.
J'ai une page ASP.NET 'page.aspx'.
Cette page se compose d'un 'PlaceHolder' dans lequel je place N
controles 'Ctrl.ascx'.
Un controle Ctrl.ascx se compose d'un Label et d'un LinkButton 'Remove'.
Lors de l'appel à page.aspx :
- [*] Je vide le PlaceHolder,
- je regarde si la variable de session 'S' existe (Cette session joue
le rôle de cache).
1. elle n'existe pas, je récupère des données de mon SGBD et je les
mets dans S,
2. elle existe, j'en récupère les données.
- Via les données précédemment récupérées, je créé des Ctrl que
j'insère dans le PlaceHolder.
Jusque là, tout va bien.
Supposons que 3 Ctrl s'affichent.
Je supprime le 1°.
- Page_Load() de page.aspx (-> je recréé les 3 précédents Ctrl)
- je passe dans la méthode 'Remove' du 1° Ctrl, je retire l'objet
correspondant du SGBD et de la session S et je refais une redirection
vers page.aspx (goto [*])
- Page_Load() de page.aspx récupère la session S, soit, 2 objets
restants et les affichent via Ctrl.
N'apparait alors que les 2° Ctrl restant.
Ok.
Puis je clique sur le 1° Ctrl et là... c'est le 2° Ctrl qui est effacé :
Si par contre je clique sur le 2°, rien ne se passe, mais au prochain
coup, celà refonctionnera qq soit le Ctrl à effacer...
Je comprends rien... apparemment, lors du 2° effacement, le LinkButton
et le Ctrl ne sont plus en phase... un problème d'ID ? Je ne sais plus
quoi faire ! Je m'en remets à vous.
Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et vérifie aussi peut-être le nombre de contrôles dans ta collection. Pour l'instant j'ai la vague impression que l'on a un pb en cas de postback et que cela marche si l'on fait un nouveau "get" ?
Si tu postes du code comme demandé par Aurélien simplifie le au maximum avant (et en général cela permet aussi de trouver le problème) pour que l'on puisse mieux suivre la logique...
-- Patrice
"Delf" a écrit dans le message de news:435349e9$0$4329$
Bonjour.
Je suis confronté à un problème ahurrissant.
Voici un exemple simple.
J'ai une page ASP.NET 'page.aspx'.
Cette page se compose d'un 'PlaceHolder' dans lequel je place N controles 'Ctrl.ascx'.
Un controle Ctrl.ascx se compose d'un Label et d'un LinkButton 'Remove'.
Lors de l'appel à page.aspx :
- [*] Je vide le PlaceHolder,
- je regarde si la variable de session 'S' existe (Cette session joue le rôle de cache).
1. elle n'existe pas, je récupère des données de mon SGBD et je les mets dans S, 2. elle existe, j'en récupère les données.
- Via les données précédemment récupérées, je créé des Ctrl que j'insère dans le PlaceHolder.
Jusque là, tout va bien.
Supposons que 3 Ctrl s'affichent.
Je supprime le 1°.
- Page_Load() de page.aspx (-> je recréé les 3 précédents Ctrl) - je passe dans la méthode 'Remove' du 1° Ctrl, je retire l'objet correspondant du SGBD et de la session S et je refais une redirection vers page.aspx (goto [*]) - Page_Load() de page.aspx récupère la session S, soit, 2 objets restants et les affichent via Ctrl.
N'apparait alors que les 2° Ctrl restant. Ok.
Puis je clique sur le 1° Ctrl et là... c'est le 2° Ctrl qui est effacé :
Si par contre je clique sur le 2°, rien ne se passe, mais au prochain coup, celà refonctionnera qq soit le Ctrl à effacer...
Je comprends rien... apparemment, lors du 2° effacement, le LinkButton et le Ctrl ne sont plus en phase... un problème d'ID ? Je ne sais plus quoi faire ! Je m'en remets à vous.
Merci.
-- Delf
Delf
Patrice wrote:
Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et vérifie aussi peut-être le nombre de contrôles dans ta collection. Pour l'instant j'ai la vague impression que l'on a un pb en cas de postback et que cela marche si l'on fait un nouveau "get" ?
Quand je trace, tout est parfait. C'est apparemment l'affichage qui pose problème.
Si tu postes du code comme demandé par Aurélien simplifie le au maximum avant (et en général cela permet aussi de trouver le problème) pour que l'on puisse mieux suivre la logique...
Ok, je vais concocter un exemple qui reproduit exactement le problème pour demain.
Merci.
-- Delf
Patrice wrote:
Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et
vérifie aussi peut-être le nombre de contrôles dans ta collection.
Pour l'instant j'ai la vague impression que l'on a un pb en cas de postback
et que cela marche si l'on fait un nouveau "get" ?
Quand je trace, tout est parfait. C'est apparemment l'affichage qui pose
problème.
Si tu postes du code comme demandé par Aurélien simplifie le au maximum
avant (et en général cela permet aussi de trouver le problème) pour que l'on
puisse mieux suivre la logique...
Ok, je vais concocter un exemple qui reproduit exactement le problème
pour demain.
Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et vérifie aussi peut-être le nombre de contrôles dans ta collection. Pour l'instant j'ai la vague impression que l'on a un pb en cas de postback et que cela marche si l'on fait un nouveau "get" ?
Quand je trace, tout est parfait. C'est apparemment l'affichage qui pose problème.
Si tu postes du code comme demandé par Aurélien simplifie le au maximum avant (et en général cela permet aussi de trouver le problème) pour que l'on puisse mieux suivre la logique...
Ok, je vais concocter un exemple qui reproduit exactement le problème pour demain.
Merci.
-- Delf
Patrice
Peut-être un problème du style l'affichage est généré sur des données que tu modifies ensuite ? Un problème de viewstate sur l'affichage ?
Cela sera plus facile avec du code. Bon courage.
-- Patrice
"Delf" a écrit dans le message de news:43578126$0$21625$
Patrice wrote:
> Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et > vérifie aussi peut-être le nombre de contrôles dans ta collection. > Pour l'instant j'ai la vague impression que l'on a un pb en cas de
postback
> et que cela marche si l'on fait un nouveau "get" ?
Quand je trace, tout est parfait. C'est apparemment l'affichage qui pose problème.
> Si tu postes du code comme demandé par Aurélien simplifie le au maximum > avant (et en général cela permet aussi de trouver le problème) pour que
l'on
> puisse mieux suivre la logique...
Ok, je vais concocter un exemple qui reproduit exactement le problème pour demain.
Merci.
-- Delf
Peut-être un problème du style l'affichage est généré sur des données que tu
modifies ensuite ? Un problème de viewstate sur l'affichage ?
Cela sera plus facile avec du code. Bon courage.
--
Patrice
"Delf" <strafer@online.fr.nospam> a écrit dans le message de
news:43578126$0$21625$636a15ce@news.free.fr...
Patrice wrote:
> Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et
> vérifie aussi peut-être le nombre de contrôles dans ta collection.
> Pour l'instant j'ai la vague impression que l'on a un pb en cas de
postback
> et que cela marche si l'on fait un nouveau "get" ?
Quand je trace, tout est parfait. C'est apparemment l'affichage qui pose
problème.
> Si tu postes du code comme demandé par Aurélien simplifie le au maximum
> avant (et en général cela permet aussi de trouver le problème) pour que
l'on
> puisse mieux suivre la logique...
Ok, je vais concocter un exemple qui reproduit exactement le problème
pour demain.
Peut-être un problème du style l'affichage est généré sur des données que tu modifies ensuite ? Un problème de viewstate sur l'affichage ?
Cela sera plus facile avec du code. Bon courage.
-- Patrice
"Delf" a écrit dans le message de news:43578126$0$21625$
Patrice wrote:
> Commence peut-être par bien tracer le ID que tu t'apprêtes à effacer et > vérifie aussi peut-être le nombre de contrôles dans ta collection. > Pour l'instant j'ai la vague impression que l'on a un pb en cas de
postback
> et que cela marche si l'on fait un nouveau "get" ?
Quand je trace, tout est parfait. C'est apparemment l'affichage qui pose problème.
> Si tu postes du code comme demandé par Aurélien simplifie le au maximum > avant (et en général cela permet aussi de trouver le problème) pour que
l'on
> puisse mieux suivre la logique...
Ok, je vais concocter un exemple qui reproduit exactement le problème pour demain.