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#] Problème déclenchement événement dans page_load


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [C#] Problème déclenchement événement dans page_load
    Bonjour à tous et bonne année !!!

    J'ai un repeater qui contient des des champs et un bouton save.
    le bouton save (attribut html <a>) est contrôlé côté serveur(runat="server") et possède une méthode saveButton_Click appelé lorsque l'événement ServerClick est appelé.

    Jusque là, pas de problème, lorsque je clique surt le bouton, l'événement est déclenché et ma méthode save appelée, ma ligne est bien rajoutée.
    Mais si recharge la page après cette action (en faisant F5 par exemple), la méthode save ets encore appelée et une nouvelle ligne est ajoutée, ce que je ne veux pas.

    Ci-dessous, la partie du code qui correspond au problème
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     
    public class Labels : wsAdmin.UserControls.RequestParamsPageInit
    {		
    ...
    protected HtmlAnchor saveButton;
    ...
     
     
    		{			
     
    			if(!IsPostBack)
    				BindLang();
     
    			BindLabels();				
     
    			if (!IsPostBack)
    			{	
     
    				BindModules();
    				BindPages();
    				BindItems();				
    			}
     
    			if (CST_IS_CENTRAL == true)
    			{
    				HeaderPage.Type = Header.BackOfficeType.Central;
    			}
    			else
    			{
    				HeaderPage.Type = Header.BackOfficeType.Local;
    			}
     
    			HeaderPage.CurrentPage = Header.PageType.Label;
    			HeaderPage.refresh();
    		}
     
    		private void InitializeComponent()
    		{    
    			this.Load += new System.EventHandler(this.Page_Load);
    			this.saveButton.ServerClick += new EventHandler(saveButton_Click);
    ...
    ...
    		}
     
    		private void saveButton_Click(object sender, EventArgs e)
    		{
    			string labelId = currentId.Text;
     
    				using (LabelDataAccess lda = new LabelDataAccess( CST_CULTURE,  CST_BRAND))
    				{
    					string text = currentText.Text.Replace("&nbsp;", " ");
    					string desc = currentDesc.Text.Replace("&nbsp;", " ");
     
    					if(CST_IS_CENTRAL && labelId == "0")
    						labelId = lda.Add(ddlPage.SelectedValue ,text, desc, false);
    					else
    					{
    						if(CST_IS_CENTRAL)
    							lda.Add(labelId, ddlPage.SelectedValue ,text, desc, false);
    						else
    							lda.AddByCountry(labelId, text, desc);
    					}
     
    				}
     
    				currentId.Text = string.Empty;
    				BindItems();
    		}
     
    }
    Comment régler ce problème
    Merci pour votre aide !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    F5 relance un postback avec les meme informations que lors du dernier postback, voila pourquoi ta méthode est relancée

    Pour éviter ça ... une idée :
    dans ta page tu écri dans un hiddenfield un id que tu incrémente a chaque save.Et du coté de ton save tu vérifie que tu n'a jamais fait cette méthode avec un id identique a la value du hiddenfield.

    pour sotocker ton id, met le en session par exemple.

    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
    private void saveButton_Click(object sender, EventArgs e)
            {
                string labelId = currentId.Text;
    int id_envoye = int.Parse(monHF.Value);
    int mon_id = (int)Session["mon_id"];
     
    if(id_envoye < mon_id ){
     
     
                    using (LabelDataAccess lda = new LabelDataAccess( CST_CULTURE,  CST_BRAND))
                    {
                        string text = currentText.Text.Replace("&nbsp;", " ");
                        string desc = currentDesc.Text.Replace("&nbsp;", " ");
     
                        if(CST_IS_CENTRAL && labelId == "0")
                            labelId = lda.Add(ddlPage.SelectedValue ,text, desc, false);
                        else
                        {
                            if(CST_IS_CENTRAL)
                                lda.Add(labelId, ddlPage.SelectedValue ,text, desc, false);
                            else
                                lda.AddByCountry(labelId, text, desc);
                        }
     
                    }
     
                    currentId.Text = string.Empty;
                    BindItems();
    monHF.Value = mon_id.toString() ; 
    Session["mon_id"] = mon_id++; 
    }
     
            }
    Et dans ton page_load quand c'est pas un postback, tu met
    Il te faut ajouter aussi des verif que la variable existe bien etc ...

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/04/2009, 17h27
  2. Problème d'évenements dans le page_load
    Par boucman dans le forum ASP.NET
    Réponses: 5
    Dernier message: 11/07/2008, 16h58
  3. Problème évènements dans clips imbriqués
    Par Aboshan441 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 05/04/2008, 14h15
  4. Problème de délai dans l'événement OnPaint
    Par mtloper dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/02/2008, 17h26
  5. Problème de déclenchement d'évènements dans un timer
    Par ArkSquall dans le forum Composants VCL
    Réponses: 18
    Dernier message: 30/04/2006, 21h32

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