Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Des controles fous alliés à se taper la tête sur un mur...

6 réponses
Avatar
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.

Merci.

--
Delf

6 réponses

Avatar
Delf
Delf wrote:

[..]



Personne ne peut m'aider ?

--
Delf
Avatar
Aurélien [MS]
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" a écrit dans le message de news:
4356090f$0$675$
Delf wrote:

[..]



Personne ne peut m'aider ?

--
Delf


Avatar
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


Avatar
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
Avatar
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


Avatar
Delf
Delf wrote:

[...]



L'exemple fonctionne...

--
Delf