IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[c#][Control] - Ajouter du javascript à son contrôle : problème des ID


Sujet :

ASP.NET

  1. #1
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut [c#][Control] - Ajouter du javascript à son contrôle : problème des ID
    Hello,

    Je suis en train d'essayer de réaliser un contrôle consistant en deux listes avec un ensemble de boutons pour faire passer les éléments d'une liste à l'autre. Ce contrôle est contenu dans une dll.

    Question de performances, je souhaite que les transferts d'une liste à l'autre soient faits par javascript. J'arrive à joindre le fichier Javascript en ressource à ma DLL.

    Mon problème se situe quand je clique sur un bouton, et que je souhaite récupérer les éléments sélectionnés dans la première liste. Je ne parviens pas à récupérer cette liste pour pouvoir la parcourir. Comment puis-je faire ?

    D'avance, merci.

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Tu doit créer ton JavaScript côté serveur afin d'utiliser la propriété ClientID de tes contrôles. Par exemple :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    string src = "var monBouton = document.getElementById('" + button1.ClientID + "');";

  3. #3
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    En fait, le code JavaScript est dans un fichier externe intégré comme ressource...

    Mais je vais essayer ta méthode pour passer les id en arguments des fonctions appelées..

    Merci, je teste et je reviens si ça ne va pas :-)

  4. #4
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    J'ai encore une petite question..

    Je suis arrivé à mettre le code sur mes boutons et ils fonctionnent, j'arrive à faire passer les éléments d'une liste à une autre, etc...

    Mon problème est que, lorsque je fais un postback pour enregistrer les données, le serveur reçoit les contrôles de listes comme si je n'avais rien modifier avec Javascript.

    Un petit exemple :

    J'ai une liste A qui contient les éléments 1, 2 et 3 et une liste B vide.

    Une fois la page chargée, et via mes fonctions JavaScript, je déplace les éléments 2 et 3 dans la liste B. J'ai bien, sur la page, ma liste A qui contient 1 et ma liste B qui contient 2 et 3. Puis je clique sur le bouton pour enregistrer (ce qui génère un postback) et là, lorsque j'observe les liste récupérée, B est toujours vide, et A contient 1, 2 et 3.

    Quelqu'un peut me dire comment contourner ce phénomène ???

    D'avance merci.

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Surement parce que tu remplis tes listes dans le PageLoad non?

  6. #6
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Non, mais en plus, le problème se situe bien avant ça (où alors je ne comprends pas ta remarque).

    En fait, les contenu des deux listbox est issu depuis une BD, et cela fonctionne.. si je change dans la bd et que je recharge la page, le contenu des liste change.

    Seulement, si je fais des changements via javascript sur le contenu des liste, puis que j'appelle ma méthode pour sauver. En mettant un BP dans le code, je peux voir que le contenu de la liste est celui initial et qu'aucun des changements n'a été mémorisé.

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Montre comment tu lies tes listes à ta DB

  8. #8
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Le code risque d'être un peu compliqué...

    En fait, le contrôle hérite d'une interface qui l'oblige à présenter la méthode LoadValues. Cette méthode reçoit (pour faire simple), une datatable, et constitue la liste de ses items dans une boucle.

    Jusque là, ça fonctionne parfaitement bien.

    Le problème est que, une fois la liste affichée dans la page, lorsque je modifie sa collection d'items via du javascript et que je fais un postback, c'est comme si rien n'avait changé.

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Je pense que lors du postback, la méthode LoadValues doit être appelée et donc tu perds ta sélection.

  10. #10
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Non, malheureusement, ce n'est pas ça, je viens de vérifier et le problème ne vient pas de là

  11. #11
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    En fait, je me rends compte que j'ai peut-être mal expliqué qqch.

    Mon contrôle est composé de deux List. La première contient les éléments "sélectionnables", et la seconde les éléments "sélectionnés". Quatre boutons permettent de faire passer les éléments d'une liste à l'autre selon ce que l'on souhaite sélectionner comme éléments.

    Jusque là, tout se passe bien. Lorsque je veux sauver les résultats, dans la méthodes qui sauve, je souhaite parcourir la liste des items de la seconde liste (sélectionnés ou non, vu que c'est simplement le fait qu'ils soient dans liste qui signifie qu'il sont sélectionnés) et sauvegarder cela en BD.

    Mon problème est que lorsque je suis dans cette méthode de sauvergarde, la collection des items de la seconde liste (les éléments sélectionnés) est vide.

    Mon interrogation est de savoir si en ajoutant des éléments à une liste via javascript, ceux-ci sont passés au serveur lors du postback ???

    Merci de m'aider en tout cas.

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Pongten
    Mon interrogation est de savoir si en ajoutant des éléments à une liste via javascript, ceux-ci sont passés au serveur lors du postback ???
    Normalement oui.
    Si t'es vraiment sûr que tes listes ne sont pas rechargées lors du postback, je vois pas trop.

    Essaye ça:
    Tu modifies ton code et tu rajoutes un element dans ta liste des "sélectionnées" en code behind lors du chargement en précisiant bien if(!page.IsPostBack)...
    Tu charges ta page et tu fais rien d'autre.
    Est-ce que tu récupères cet élément lors du postback?

  13. #13
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Citation Envoyé par lutecefalco
    Normalement oui.
    Si t'es vraiment sûr que tes listes ne sont pas rechargées lors du postback, je vois pas trop.

    Essaye ça:
    Tu modifies ton code et tu rajoutes un element dans ta liste des "sélectionnées" en code behind lors du chargement en précisiant bien if(!page.IsPostBack)...
    Tu charges ta page et tu fais rien d'autre.
    Est-ce que tu récupères cet élément lors du postback?
    Je pense qu'on se rapproche.

    En faisant cela : l'élément apparaît bien dans liste au chargement, mais lors du PostBack, il n'est plus dans la liste.

  14. #14
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bon bah ta liste des élements selectionnés est ré initiliatisée lors du PostBack.
    A toi de trouver où

  15. #15
    Membre expérimenté
    Homme Profil pro
    Consultant SharePoint
    Inscrit en
    Mars 2006
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SharePoint
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 270
    Par défaut
    ben il me semble que le composant que tu chercher a faire s'apelle une list picker...(deux list box avec des boutons qui font passer des elements de l'un a l'autre).
    J'ai fait quelques topics dessus dans ce forum...chercher un peu.
    En fait je l'ai réalisé dans un usercontrol avec des update panels...ca marche nikel. (pas besoin de faire du javascript dans mon cas, juste des méthode appelées lors du clic d'un bouton se trouvant dans l'update panel....
    jpe te filer du code stu veux....voilou

  16. #16
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    kazoumoulox : Oui, c'est en effet ce que je cherche à faire.

    Je veux bien ton code si tu es d'accord.

    Comment procède-t-on ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2008, 12h16
  2. Réponses: 7
    Dernier message: 13/04/2006, 11h56
  3. [VB.NET]evenement sur un controle ajouté par code
    Par Golzinne dans le forum Windows Forms
    Réponses: 14
    Dernier message: 01/03/2006, 22h37
  4. Réponses: 3
    Dernier message: 07/02/2006, 13h25
  5. Ajout dynamique d'un contrôle à une fenêtre
    Par Yacine95000 dans le forum MFC
    Réponses: 6
    Dernier message: 08/06/2004, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo