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 d'exécution de code d'un simple bouton


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut Problème d'exécution de code d'un simple bouton
    Bonjour à tous,

    j'ai un petit souci que je n'arrive pas à expliquer et qui m'énerve.
    J'ai fait un site web avec visual studio express 2010.
    C'est en fait une sorte de CMS personnel.

    Dans une des pages du site, j'ai ceci :
    1 bouton simple (btn_ajout)
    1 gridview et quelques textbox.

    Pour le chargement de ma page et des données, aucun problème.
    Par contre, lorsque je clique sur mon bouton "btn_ajout", il est censé passer la variable globale de ma page static string MODE à "AJOUT".
    Ceci me permet de dire, lors de l'enregistrement de mes données, qu'il s'agit d'un ajout de données, et pas de modifications.
    Le problème, c'est qu'apparemment, le code n'est jamais exécuté.
    J'ai mis un point d'arrêt et effectivement, le débogueur ne passe pas dans le code du bouton.
    Ca fait plusieurs jours que je cherche et je ne parviens pas à trouver la source du problème. Quelqu'un aurait-il une idée?

    Voici le code de ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public partial class maPage : System.Web.UI.Page
        {
            static string MODE;
            ...
         }
    Le code de mon bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    protected void btn_new_billet_Click(object sender, EventArgs e)
            {
                MODE = "AJOUT";
                txt_titre.Text = "sdvsdvsdv";
                txt_resume.Text = "";
                txt_lien_image.Text = "";
                txt_alt_image.Text = "";
                txt_lien_fichier_associe.Text = "";
                CKEditor1.Text = "";
                txt_titre.Focus();
            }
    Le code que j'utilise pour mettre à jour mes données ou en ajouter
    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
    20
    21
    22
    23
    24
     
    protected void btn_valider_modifs_Click(object sender, EventArgs e)
            {
                switch(MODE.ToUpper())
                {
                    case "AJOUT":
                        SqlDSBillets.InsertParameters.Add("datebillet", txt_date_billet.Text);
                        SqlDSBillets.InsertParameters.Add("titrebillet", txt_titre.Text);
                        SqlDSBillets.InsertParameters.Add("resumebillet", txt_resume.Text);
                        SqlDSBillets.InsertCommand = "INSERT INTO billet (datebillet,titrebillet,resumebillet) values (@datebillet,@titrebillet,@resumebillet)";
                        SqlDSBillets.Insert();
                        break;
                    case "MODIFICATION":
                        int index_ligne = GridView1.SelectedIndex;
                        int idbillet = int.Parse(GridView1.DataKeys[index_ligne].Value.ToString());
     
                        SqlDSBillets.UpdateParameters.Add("datebillet", txt_date_billet.Text);
                        SqlDSBillets.UpdateParameters.Add("titrebillet", txt_titre.Text);
                        SqlDSBillets.UpdateParameters.Add("resumebillet", txt_resume.Text);
     
                        SqlDSBillets.UpdateCommand = "UPDATE billet SET DateBillet = @datebillet, TitreBillet = @titrebillet, resumeBillet = @resumebillet WHERE Idbillet = " + idbillet;
                        SqlDSBillets.Update();
                        break;
                }
    Merci d'avance pour votre aide

    Penchu

  2. #2
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    à quel moment tu fait la liaison entre le bouton et l'evenement "btn_new_billet_Click" ?? est-ce dans ta page aspx ???

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    C'est déjà à la base une très mauvaise idée d'utiliser une variable static dans une page aspx.


    La valeur sera partagée par tous les utilisateurs connectés !

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Bonsoir g_tarik0010,

    je n'ai pas tout à fait compris ta question.
    Pour faire plus simple et plus visuel encore, j'ai mis ma page billet_admin.aspx en pièce jointe à ma réponse.

    Bluedeep,
    que me conseillerais-tu d'utiliser comme type de variable.
    Je me posais déjà la question de savoir si ma méthode pour gérer les ajouts ou modification de données était la bonne étant donné les problèmes que je rencontre.
    Je ne suis absolument pas expert en asp.net, j'apprends sur le tas et je ne demande qu'à m'expérimenter.

    Merci déjà de votre aide.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:Button ID="btn_new_billet" runat="server" onclick="btn_new_billet_Click" Text="Nouveau billet" />
    le onclick tu doit le modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:Button ID="btn_new_billet" runat="server" OnClick="btn_new_billet_Click" Text="Nouveau billet" />
    car dans ton cas il le onclick c'est un evenement client javascript et non pas un evenement serveur

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Je viens d'essayer ce que tu me dis, mais j'ai la même syntaxe pour mon bouton de validation avec lequel je ne rencontre aucun souci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:Button ID="btn_valider_modifs" runat="server" onclick="btn_valider_modifs_Click" Text="Valider les modifications" />
    Je ne comprends vraiment pas...

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Me revoilà avec du neuf.
    Je viens de remarquer un phénomène que je ne m'explique pas.
    En fait, lorsque je clique sur mon bouton "Nouveau billet" juste après le chargement de ma page, rien ne se passe.
    Par contre, une fois que ma page est chargée, si je sélectionne une ligne de la gridview (juste en dessous de mon bouton "Nouveau billet") et qu'ensuite seulement je clique sur ce bouton, alors le code de mon bouton est exécuté.
    Comment est-ce possible?

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Bonjour,

    je me permets de remettre mon problème en ligne car j'ai de "drôles" de comportements sur ma page (ou des comportements que je n'ai pas compris).

    En fait, lorsque je clique sur mon bouton de validation, il repasse systématiquement dans la méthode de chargement de ma page (et ce, sur toute les de mon site que je peux gérer).
    C'est très problématique car du coup, ça recharge mes champs avec les données de ma base de données, et ensuite seulement ça enregistre les données (mais ce sont les mauvaises du coup).

    Pourriez-vous m'indiquer une méthode différente de la mienne pour ajouter ou enregistrer des données sur une page web?

    Merci à tous

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par penchu Voir le message
    En fait, lorsque je clique sur mon bouton de validation, il repasse systématiquement dans la méthode de chargement de ma page (et ce, sur toute les de mon site que je peux gérer).
    Ben, c'est un peu le principe FONDAMENTAL d'ASP.Net en fait... Ca s'appelle le cycle de vie d'une page et c'est ce qu'il faut comprendre pour réussir à développer en ASP.Net
    Heureusement, la littérature est assez riche et exhaustive à ce sujet.

    Exemple: http://dotnet.developpez.com/faq/asp...ycle#lifecycle

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Salut Nathanael.

    Je te remercie pour ta réponse.
    J'avoue clairement que je n'avais pas conscience de ce cycle de vie d'une page...

    Par contre, comment puis-je faire pour implémenter le LoadComplete dans mon code behind?
    Et surtout, est-ce que je peux ajouter le code d'initialisation de certains de mes champs dans cette méthode? Est-ce le bon endroit?

    D'avance merci et bonne fin de weekend.

    Penchu

  11. #11
    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
    regarde du coté de IsPostBack

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Merci tortuegenie,

    j'ai peut-être pas fait quelque chose de super propre au niveau du code, mais après tous mes tests effectués en pas à pas, ça fonctionne très bien.
    Voici un bout de code pour le chargement de ma page. Dites-moi s'il y a moyen de rendre ça plus propre et plus sécurisé.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    protected void Page_Load(object sender, EventArgs e)
            {
                if (User.Identity.IsAuthenticated)
                {
                    Page.Title = "Edition de la page par " + User.Identity.Name;
                }
                else
                {
                    Page.Title = "Page sécurisée - Login nécessaire";
                    FormsAuthentication.RedirectToLoginPage();
                }
     
                idpage = Request.QueryString["IDpage"];
                switch (idpage)
                {
                    case "NEW":
                        _MODE = "AJOUT";
     
                        if (!IsPostBack)
                        {
                            txt_date_creation.Text = DateTime.Now.ToString("dd/MM/yyyy");
                            lbl_date_derniere_modif.Text = DateTime.Now.ToString("dd/MM/yyyy");
                            cmb_villes.SelectedValue = "-1";
                        }
                        break;
                    default:
                        if ((idpage != null) && (idpage != ""))
                        {
                            _MODE = "MODIFICATION";
     
                            if (LBL_CHARGEMENT_INFO.Text == "TRUE")
                            {
                                Charger_Info_Page(idpage);
                            }
                        }
                        break;
                }
    }
    Et encore merci pour votre aide

Discussions similaires

  1. [AC-2000] problème à l'exécution de code VBA
    Par nico84 dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/09/2009, 12h54
  2. quelques problèmes pour exécuter mes codes
    Par djimangue dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2007, 01h00
  3. problèmes d'exécution de code
    Par jlon25 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/08/2007, 11h44
  4. probléme d'exécution de code
    Par nicolovitch dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 10h18
  5. [VBA]Problème d'exécution de code
    Par cciocc dans le forum IHM
    Réponses: 1
    Dernier message: 08/06/2006, 11h00

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