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 :

Problème de postback ?


Sujet :

ASP.NET

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut Problème de postback ?
    Bonjour à tous,

    voici mon souci :

    j'ai, dans un formulaire, deux DropDownList reliés à ma base de données
    (ce qui nous intéresse : la table SALLE(id_sl, bâtiment, nom_salle, téléphone)),
    le premier DDL permet de sélectionner le bâtiment, et en fonction de ça, l'autre DDL se remplit avec les nom_salles qui existent dans le bâtiment sélectionné.

    Sachant que selon la salle, le formulaire affiche le numéro de téléphone, mes deux DDL sont en autopostback.

    Ensuite, sur l'évènement Button_Click, je récupères les différents champs, et j'enregistre un champ dans ma table COMMANDE(id_cm, date, id_sl, etc).
    Le seul souci, c'est qu'au click sur le bouton, la variable contenant mon DropDownList.SelectedValue se vide.

    Je soupçonne fortement la page qui réinitialise mon DDL à zéro (donc SelectedValue vide).


    Comment faire ...?

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Salut,

    il suffit de mettre if(!IsPostBack) dans ton page laod et met le remplissage des DDL dedans.


  3. #3
    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
    Un indice: regarde du côté de IsPostBack

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut
    Merci de vos réponses si rapides !

    Cependant, j'ai tenté de faire des if(!IsPostBack) sans succès...

    Vu que le premier DropDownList est directement rempli grâce au SqlDataSource, il n'y pas de code dans le .cs pour le remplir, et le deuxième DropDownList se remplit dynamiquement selon le choix retenu sur le premier, du coup je ne peux pas le placer dans le Load, son remplissage intervient sur l'évènement SelectedIndexChanged du premier DDL.

  5. #5
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Et bien place le dans OnDataBind non ?...

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut
    Je vais tester ça, désolé si je mets du temps à répondre, mais je suis sûr mon code qu'en fin de semaine, étant à l'école les premiers jours de celle-ci ^^

  7. #7
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Tu mets !IspostBack dans le page_load. Puis tu mets un updatePanel au niveau de ta page aspx avec tes 2 dropdownlists, où alors directement le composant Ajax qui gère cela.

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut
    Je ne connaissais pas du tout les updatePanel, et effectivement, c'est génial !
    Cependant, je ne vois vraiment pas pourquoi placer un !IsPostBack dans le page_Load étant donné que je n'ai rien quasiment dedans...

    Edit : j'ai finalement rentré les propriétés du DDL1 dans le Page_Load, mis un !IsPostBack, mais ça ne change rien du tout...je ne comprends vraiment pas !

  9. #9
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Citation Envoyé par Ashura95 Voir le message
    Je ne connaissais pas du tout les updatePanel, et effectivement, c'est génial !
    Cependant, je ne vois vraiment pas pourquoi placer un !IsPostBack dans le page_Load étant donné que je n'ai rien quasiment dedans...
    ça te permet de charger des données et de remplir des combobox, dropdownlist, etc... uniquement lors du chargement inital de la page.

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut
    Bah c'est ce que j'ai fait...j'ai mis l'association du DropDownList1 dans un if(!IsPostBack), mais ça ne change rien.

    En réalité, c'est peut-être pas le PostBack qui est la source du problème, vu que j'ai ajouté un calendrier, et que lui crée un PostBack sans remettre ma variable à zéro.

    Cette variable, c'est un numéro de salle (nommée "index" dans mon code).
    En gros, dans le DropDownList1 on sélectionne un bâtiment, selon le bâtiment,
    le DropDownList2 se rempli avec les salles de ce bâtiment, et selon la salle choisie,
    j'affiche à l'écran le numéro de salle, le numéro de téléphone, etc (stockés dans une bdd SQLServer).
    Ensuite on clique sur un bouton, et ça lance une insertion dans la base de donnée avec notre nom, la date choisie et la salle choisie.

    Le seul souci, c'est qu'au click sur le bouton, la variable qui contient le numéro de salle prend la valeur 0. C'est pourquoi je pensais à un problème de PostBack, mais apparemment ça doit être autre chose...mais j'vois vraiment pas quoi !

    Quelqu'un aurait une idée...? J'avoue que je rame complètement là.

    Le code sur le bouton_click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
            demandeur = TextBox1.Text;
            date = new DateTime(Calendar1.SelectedDate.Year, Calendar1.SelectedDate.Month, Calendar1.SelectedDate.Day, Convert.ToInt16(TextBox4.Text), Convert.ToInt16(TextBox5.Text), 0);
     
            // recherche de l'identifiant de la dernière conférence enregistrée
     
            var lastNum = (from i in msdc.VIDEOCONFERENCES
                           select i.id_video).Max();
     
            // création d'une entrée dans la base de données
     
            VIDEOCONFERENCES newVideoEntry = new VIDEOCONFERENCES();
            newVideoEntry.id_video = (Convert.ToInt16(lastNum) + 1).ToString();
            newVideoEntry.CN = demandeur;
            newVideoEntry.date = date;
            newVideoEntry.index = index;
     
            msdc.VIDEOCONFERENCES.InsertOnSubmit(newVideoEntry);
            msdc.SubmitChanges();

    -> EDIT :

    Bon hé bien après une demi-journée de torture mentale j'ai fini par résoudre ce problème...
    La variable se remettais à zéro, je ne sais toujours pas pourquoi, mais quand je testais le Selected.Value du DropDownList2 avec un Reponse.Write sur le bouton click, on pouvait remarquer que celui-ci gardait sa valeur (alors comment dans ce cas, une variable qui ne change de valeur que sur l'événement SelectedIndexChanged peut se remettre à zéro ?!). Du coup, j'ai pu récupérer l'index en appelant la base de données sur le bouton click, chose qui ne marchait pas avant, on se sait pas pourquoi.
    La seule modification réelle que j'ai faite, c'est un changement de type dans ma base de données, d'une clef primaire que j'utilise pas dans mon code.

    Mystère de dotnet...? mais en tous cas, maintenant, ça marche et je vais pouvoir avancer, merci à tous !

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

Discussions similaires

  1. Problème IE & PostBack sur site asp.net déployé
    Par 3KyNoX dans le forum ASP.NET
    Réponses: 0
    Dernier message: 23/06/2009, 10h52
  2. Template control : Problème de PostBack
    Par Worldofdada dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/03/2009, 17h27
  3. Problème de postback
    Par soso78 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/12/2008, 15h00
  4. Treeview problème sur postback
    Par RENO184 dans le forum C#
    Réponses: 0
    Dernier message: 17/11/2008, 12h31
  5. Problème de PostBack
    Par remibeginer dans le forum ASP.NET
    Réponses: 5
    Dernier message: 20/05/2008, 14h02

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