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 :

Chargement d'une listbox, onkeydown


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Par défaut Chargement d'une listbox, onkeydown
    Bonjour,

    Je désire faire quelque chose de très simple: charger une listbox à l'aide d'une méthode serveur, sur un évènement type "onkeydown" d'un champs texte.

    Bon, çà j'arrive à le faire très simplement en PHP + Javascript... Mais en ASP.NET je ne sais pas du tout par où commencer, et comment faut réfléchir.

    Déjà, le framework est censé encapsuler et auto-générer le code javascript non? or impossible de trouver l'évènement onkeydown sur un champ texte. Du coup obligé de faire un Attributes.Add("onkeydown","...") sur le champ texte... Et là après je suis pomé. Je sais pas du tout quoi mettre et où le mettre (code client, code serveur??)!

    Ensuite, comment appeler une méthode serveur pour charger ma liste via Ajax??
    J'aimerai éviter au maximum de faire du javascript, laisser le framework et les composants ASP.NET AJAX faire le boulot, et me concentrer sur mon code serveur.

    Voilà. Désolé, je suppose que ce problème est simple à résoudre, et que je vous fais un peu perdre votre temps.

    Merci d'avance.

  2. #2
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Tu connais la solution AjaxControlToolKit ?
    C'est une solution que Microsoft propose et qui contient des composants AJAX simple à mettre en place.

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Par défaut
    Oui je viens de la télécharger et de regarder...
    Encore une fois je ne comprend rien. Je pense qu'il faut que j'utilise le DynamicPopulateExtender, mais je ne comprend pas comment çà marche!

  4. #4
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Regarde plutôt leur exemple CascadingDropDown

  5. #5
    Membre averti
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Par défaut
    Comment faire pour lier ma méthode "GetDropDownContents" de mon CascadingDropDown à un appel d'un évènement onkeydown d'un champ texte?

  6. #6
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    dsl, j'ai mal compris ta question . La je ne sais pas trop si le toolkit à un composant qui te permet de faire ça.

  7. #7
    Membre averti
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Par défaut
    bouhouhouhou

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Dans ton server side code:
    TextBox1.Attributes.Add("onKeyDown", "DoSomething();"); }

    Bon alors la fonction DoSomething, c'est du javascript, la tu peux demander un reload de la page en passant des parametres pour indiquer que tu dois charger ta list box.

    Je sais c'est pas terrible, mais en cherchant dans cette voie ya peut etre un moyen "mieux" ?

    D'ailleurs je suis interessé si qq1 a une reponse "propre"

  9. #9
    Membre averti
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Par défaut
    Il doit quand même y avoir un moyen de gérer les scripts serveurs appelés par AJAX sans faire de javascript à la mimine non?
    Il y a toute une tripotée de contrôle AJAX dans la boite à outil, ils ont forcément dû penser à çà...

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Apres 5 minutes de recherches, je crois qu'il n'y a effectivement pas d'évenement onkeydown sur le controle coté serveur, y'en a que coté client.

    Désolé pour toi :p

  11. #11
    Membre averti
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Par défaut
    Bon j'ai trouvé quelque chose...
    Déjà :
    http://msdn2.microsoft.com/fr-fr/lib...h3(VS.80).aspx
    http://msdn2.microsoft.com/fr-fr/lib...7k(VS.80).aspx

    Ca explique effectivement les évènements de contrôles nécessitant un refresh de la page (onclick...) peuvent être gérés par ASP directement, avec un autopostback à true ou non.
    Les scripts uniquement client (onmouseover, onkeyup...), faut coder du javascript.

    Pour ceux que çà interesse, voici ce que j'ai fait, j'ai essayé de limiter un max l'utilisation du javascript:

    Côté client, j'ajoute un élément DynamicPopulateExtender d'AjaxControlToolKit, que je lie à ma listbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ajaxToolkit:DynamicPopulateExtender 
                            ID="dp" 
                            runat="server"
                            ServiceMethod="GetListeContact" 
                            TargetControlID="controlListeContact" 
                            BehaviorID="dp1" PopulateTriggerControlID="Label1">
    </ajaxToolkit:DynamicPopulateExtender>
    Côté serveur, je code ma méthode de remplissage de ma liste box (celle qui est définie dans mon DynamicPopulateExtender):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string GetListeContact(string contextKey)
    {
       return "<option value='toto'>toto";
    }
    Ensuite, j'ajoute une gestion d'évènement onkeyup sur mon champ texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void Page_Load(object sender, EventArgs e)
    {
            controlChampUsername.Attributes.Add("onkeyup", "remplirListe()");
    }
    On est côté client ici, je ne peux donc pas appeler directement ma méthode serveur. J'ai donc juste besoin de rajouter un petit script javascript côté client, afin de récupérer le contenu de mon champ texte, et de faire le lien entre mon DynamicPopulateExtender et ma méthode de remplissage, par l'appel à la fonction "populate" (en gros ici "populate" côté client = "GetListeContact" côté serveur):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script language="javascript" type="text/javascript">
            function remplirListe(contexte) {
                var nomClient = document.getElementById('controlChampUsername').value;
                $find('dp1').populate(nomClient);
            }
    </script>
    Voilà voilà. Merci quand même pour le coup de main. J'ai pas trouvé de meilleure solution, il serait agréable de trouver une meilleure gestion des évènements clients, autre que de se taper du javascript...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Binding pour le chargement d'une ListBox Et pour récupérer le SelectedItem
    Par Arnaud13 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 13/06/2014, 14h16
  2. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 10h53
  3. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25
  4. Chargement d'une lib partagée C++ dans un programme C
    Par Zero dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/09/2003, 16h40
  5. Chargement d'une texture a partir de la mémoire
    Par logramme dans le forum DirectX
    Réponses: 6
    Dernier message: 27/01/2003, 14h57

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