Datasource et databind.

Résolu
theoorleans45 Messages postés 18 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 21 octobre 2006 - 7 août 2006 à 16:57
theoorleans45 Messages postés 18 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 21 octobre 2006 - 8 août 2006 à 10:24
Je crois que je n'ai jamais rien trouvé d'aussi "prise de tête" que le postback avec les datasource et databind....

Voilà mon problème.
Dans ma page, j'ai 3 panels, simulant 3 onglets. On passe d'un panel à l'autre en cliquant sur un bouton "next" situé sur les 3 panels.
Ce bouton se charge d'incrémenter une property (1, 2 ou 3 pour savoir à tout moment dans quel onglet on est).

Chacun des panels regroupe des controles web, dont des datagrids et un select HTML paramétré via le code behind (datasource et databind).
Arrivé sur le 2e onglet, il devient impossible de tester "ispostback" puisqu'en fait, étant toujours sur la même page, mais sur un onglet différent du premier, cette variable vaut toujours vrai. Du coup, pour les objets de type datagrid etc, ça devient la galère.

J'avais trouvé une solution en mettant le code d'initialisation (des éléments du panel suivant) dans le bouton "next" qui passe au panel suivant. De façon à ce qu'il ne soit exécuté qu'une fois.

En gros, dans mon Panel3, j'ai mon "select" qui contient des infos (couple value-text) à partir d'un datasource. Le datasource et databind sont exécutés dans le code du bouton "next" du panel2.
Sur mon Panel3, j'ai aussi un bouton "ajouter" qui ajoute en javascript une valeur dans le select. Un second bouton du panel3 "enregistrer" se charge de parcourir ce select et de faire des ajouts en base de données. Or, quand je clique dessus, il me trouve QUE les éléments de départs, et réaffiche de nouveau mon select initial (sans ceux que j'ai ajouté par la suite en javascript).

Je sais pas comment faire. J'ai besoin d'un gros coup de main parce que c'est bloquant pour mon projet. Je suis prêt à vous expliquer plus en détail encore si ça manque de clarté, mais aidez-moi !!!

4 réponses

theoorleans45 Messages postés 18 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 21 octobre 2006 1
8 août 2006 à 10:24
controle wizard ? Heu, j'ai commencé .Net tout seul y a quelques mois, et heu.... c'est quoi ?

Sinon, j'ai trouvé pourquoi ça ralentissait. Je stockais mes infos issues de l'AD dans une property de type datatable et elle me servait à remplir mon select.

En virant la property, je n'ai plus de latence de chargement...(mais je vais être obligé de relire l'AD pour récupérer les informations que je comptais prendre dans ma property pfff).
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
7 août 2006 à 23:39
Bonsoir,


Ce que tu décris est totalement normal, rajouter les items sur le client ne va pas automatiquement les rajouter sur le serveur. Je ne pense pas que tes onglets soient le problème. Essaye d'abord de rajouter tes items dans une page classique puis fais le dans tes onglets





<hr />
Cyril - MVS - MCP
0
theoorleans45 Messages postés 18 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 21 octobre 2006 1
8 août 2006 à 10:09
Donc, si j'ai bien compris, l'attribut runat="server" que j'ai mis dans dans ma balise Select, me permet d'accéder à l'objet, mais est incapable de parcourir son contenu, inséré à l'aide de javascript ?


 


Bon tant pis. Va falloir que je trouve un autre moyen...


J'ai un autre soucis, plus ou moins lié à tout ça : je parcours à un moment, dans un de mes nombreux panels de ma page, une active directory pour récupérer un peu plus de 1100 personnes, que j'insère (à l'aide d'un datasource et databind) dans un de mes selects.


Pour être concret, sur mon "panel 5", j'ai un bouton pour passer au "panel 6". Sur mon "panel 6", j'ai un select avec toutes les personnes de l'AD + un bouton pour passer au "panel 7". Sur mon "panel 7", j'ai un datagrid classique.


En gros, quand je clique sur le bouton du "panel 5" (chargé de remplir le select et d'afficher le panel suivant), ça réfléchit un petit moment avant de m'afficher mon select rempli de mes 1100 personnes (donc normal puisque la lecture de l'AD est assez longue). Ce qui l'est moins, c'est qu'un clic sur le bouton du "panel 6" (et qui doit normalement me diriger vers le "panel 7" où y a mon datagrid) rame ! Avant d'aller dans le page_load, le navigateur réfléchit comme s'il re-remplissait encore mon select (je sais pas trop ce qu'il fait en fait). Après quelques secondes, j'arrive bien au "panel 7", mais toutes mes intéractions sur le datagrid par exemple sont précédées d'une durée assez longue avant la visualisation du résultat à l'écran, comme si quelque part, il lisait encore mon AD ou je-ne-sais-quoi qui le fait réfléchir. Je n'arrive pas à passer outre cette latence de chargement qui, selon moi, n'a pas lieu d'être à ce moment là.

J'ai testé en virant l'initialisation de mon select, et toutes mes intéractions à partir du "panel 7" sont quasi immédiate. Je comprends pas, vu que l'initialisation du select n'est faite qu'une fois (selon le débuggueur).

Un coup de main ?


 
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 août 2006 à 10:19
La je ne peux pas dire grand chose, regarde par ou passe ton code en te mettant en mode pas à pas :-/ Mais d'aprés ce que j'ai compris tu aurais pu utiliser le controle Wizard d'asp.net 2 je pense qu'il t'aurais grandement simplifier la tache ... :-)

<hr />Cyril - MVS - MCP
0
Rejoignez-nous