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 :

[ASP.Net]Evènement éxécuté 2 fois


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Par défaut [ASP.Net]Evènement éxécuté 2 fois
    Bonjour,

    Sur ma page aspx, j'ai plusieurs bouton qui font appel à des événements.
    lorsque je suis en mode debug, je vois que je passe 2 fois dans mon événement (placé en code Behind).
    ce qui n'est pas pratique lors de la création de fichiers qui porteront le meme nom.

    quelqu'un sait pourquoi j'ai cette erreur?

    merki

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Alors, tu as cette erreur parce que tu as écris du code qui passe deux fois par l'événement tout simplement.

    Etant donné que nous ne sommes pas devins, nous ne pouvons pas déterminer quel est ton problème sans support (une copie qui code qui ne marche pas par exemple).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Par défaut
    tres bien
    je fais une reprise de code, donc c'est pas toujours optimum, car je cherche pas trop a modifier l'existant(c'est dans le cadre d'une migration)

    voici le code dans le aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:textbox id="txtDateCreation" runat="server" Width="83px" Font-Names="Verdana" Font-Size="8pt" Height="19px" ReadOnly="True" MaxLength="12"></asp:textbox>
    <asp:label id="lblCreation"  runat="server" Width="232px" Font-Names="Verdana" Font-Size="8pt" Height="16px" Font-Bold="True">Cr&eacute;er un dossier pour le Conseil du</asp:label>
    <asp:button id="btnCreationOK"  runat="server" Font-Names="Verdana" Font-Size="8pt" Text="OK" OnClick="btnCreationOK_Click"></asp:button>
    ma methode btnCreationOK_Click :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void btnCreationOK_Click(object sender, EventArgs e)
        {
            // conversion de la date en jour mois année
            string sConseil = Convert.ToDateTime(txtDateCreation.Text).ToString("d MMMM yyyy").Trim();
            Label1.Text = sConseil;
            // Création d'un conseil
            dlbManager.CreateConseilFolder(portalURL, docLibURL, sConseil, dlbManager.TabDirections);
     
            Label2.Text = "Conseil du " + sConseil + " créé!";
            // réaffecte la nouvelle collection de SPFolders aux menus déroulants
            ddl_Bind();
        }
    le ddl_bind():
    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
     
    private void ddl_Bind()
    	{
            Folders = this._web.GetFolder(docLibURL).SubFolders;
            //Folders = this.dlbManager.DocLibFoldersList(portalURL, docLibURL);
     
    		// Remplit la liste déroulante pour le Transfert SPS->Local
    		ddlSPSToLocal.DataSource = Folders;
    		ddlSPSToLocal.DataValueField = "Name";
    		ddlSPSToLocal.DataTextField = "Name";
    		ddlSPSToLocal.DataBind();
            if (ddlSPSToLocal.Items.Count > 0)
            {
                ddlSPSToLocal.Items.Remove("Forms");
            }
    ...repeter pour autant de DDL
    }
    le dlbManager.CreateConseilFolder()
    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
     
    public void CreateConseilFolder(string portalURL, string docLibURL, string dateConseil, string[,] DirectionArray)
    	{
    		SPSite site = new SPSite(portalURL);
    		try
    		{
    			SPWeb web = site.OpenWeb();
    			SPListCollection lists = web.Lists;
     
                //on autorise les modifications dans la bibliothèque de documents
                web.AllowUnsafeUpdates = true;
     
    			// librairie de documents
    			// on récupère la collection des dossiers
    			try
    			{
    				SPFolderCollection Folders = web.GetFolder(docLibURL).SubFolders;
    				// on y ajoute le notre
    				try
    				{
    					Folders.Add("Conseil du " + dateConseil);
    					// On rentre dans le dossier du conseil
    					Folders = web.GetFolder(docLibURL + "\\Conseil du " + dateConseil).SubFolders;
    					// On y crée les dossiers de direction
    					int i;
    					for (i = 0; i < tabDirections.GetLength(1); i++)
    					{
    						Folders.Add(tabDirections[0, i]);
    						//Console.WriteLine("Le dossier \"" + tabDirections[0, i] + "\" a été créé");
    					}
    					// Création du dossier "Refusees"
    					Folders.Add("refusées");
    					// Création du dossier "Annexes"
    					Folders.Add("annexes");
    					// Création des Suppléments conseil
    					SupplementsConseil(dateConseil);
    				}
    				catch (Exception e)
    				{
    					EventLog1.WriteEntry("Erreur de CreateConseilFolder : " + e.Message + " : " + portalURL);
    					return;
    				}
    			}
    			catch (Exception e)
    			{
    				EventLog1.WriteEntry("Erreur de CreateConseilFolder : " + e.Message + " : " + portalURL);
    				return;
    			}
    		}
    		catch (Exception e)
    		{
    			EventLog1.WriteEntry("Erreur de CreateConseilFolder : " + e.Message + " : " + portalURL);
    			return;
    		}
    	}
    je sais pas s'il vous en faut plus!

  4. #4
    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
    Tu passes 2 fois dans quel événement?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Par défaut
    dans btnCreationOK_Click()

    mais c'est pareil pour tous mes autres boutons

    (j'ai pas mis tout mon code sinon ça allait faire trrès long)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Par défaut
    On m'a fait remarquer que je passait de fois car il y avait 2 appels (eh oui!)
    en fait, j'avais renseigné le onClick() de mon controle dans ma page aspx
    <asp:button id="btnCreationOK" runat="server" Font-Names="Verdana" Font-Size="8pt" Text="OK" OnClick="btnCreationOK_Click"></asp:button>

    et aussi dans les événements du controle (dans les propriétés du controle)!
    OnClick="btnCreationOK_Click"

    et donc ça passait 2 fois!

    merci

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    J'allais poster qu'il manquait le Page_Load

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Par défaut


    je récapitule la réponse (celle en haut n'est pas tout a fait exacte)

    Effectivement, les 2 syntaxes("btnCreationOK.Click += new EventHandler(btnCreationOK_Click);" dans le code behin et onClick="btnCreationOK_Click" dans mon aspx) ajoutent chacune un handler donc la méthode est appelée 2 fois.

    A vous de voir la syntax que vous préférée : dans la partie ui (aspx) ou dans le code behind (cs).

    voila (un merci a Guilaume qui m'a aidé)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/03/2011, 14h55
  2. hébergeur asp.net et php a la fois
    Par Issam dans le forum Autres hébergeurs
    Réponses: 0
    Dernier message: 24/09/2008, 12h15
  3. Réponses: 2
    Dernier message: 20/08/2008, 23h09
  4. [VS2003][ASP.NET 1.1][DataGrid] Evènement d'un bouton de DataGrid
    Par KipDynamite dans le forum Framework .NET
    Réponses: 1
    Dernier message: 24/01/2008, 10h24
  5. [C#/ASP.net] Evènement sur objet de session
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/08/2007, 14h49

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