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 :

Cliquer deux fois pour lancer le onclick d'un Imagebutton dans un datagrid


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Cliquer deux fois pour lancer le onclick d'un Imagebutton dans un datagrid
    Je reviens à la charge avec un problème que je n'arrive pas à résoudre.
    J'ai un moteur de recherche qui effectue donc une requete lorsqu'on clique sur un des boutons de recherche pour ensuite afficher un datagrid, qui contient des Imagebuttons.
    Mon problème est que je suis obligé de cliquer 2 fois qur les imagebutton pour que l'évènement onclick (qui ouvre une popup) se lance.
    La première fois, rien ne se passe à part qu'il y a (il me semble) un rafraichissement de la page ou du datagrid sans changer les données.
    Au deuxième clic, c'est bon.
    Je n'ai pas toruvé de solution et je deviens zinzin lol

    Voici mon code pour le datagrid et un imagebutton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <asp:DataGrid id="Datagrid1" runat="server" AllowPaging="true" AllowSorting="true" Visible="true" ShowHeader="true" BackColor="#efefef" AlternatingItemStyle-BackColor="#ffffff" BorderColor="#a9a9a9" BorderStyle="Solid" BorderWidth="1px" ItemStyle-Height="40px" Width="940px" AutoGenerateColumns="false">
    <COLUMNS>
    <ASP:TEMPLATECOLUMN>
    <ITEMTEMPLATE>
    <ASP:IMAGEBUTTON id="IMGsupp" Runat="server" AlternateText="Supprimer la D.A" ImageUrl='<%# ChangeImageSupprimeDA(DataBinder.Eval(Container,"DataItem.Numero_DA")& "|" &DataBinder.Eval(Container,"DataItem.Service_1")& "|" &DataBinder.Eval(Container,"DataItem.Service_2")& "|" &DataBinder.Eval(Container,"DataItem.Demandeur")& "|" &DataBinder.Eval(Container,"DataItem.Validee")& "|" &DataBinder.Eval(Container,"DataItem.Date_validation"))%>' CommandArgument='<%# DataBinder.Eval(Container,"DataItem.Numero_DA")& "|" &DataBinder.Eval(Container,"DataItem.Service_1")& "|" &DataBinder.Eval(Container,"DataItem.Service_2")& "|" &DataBinder.Eval(Container,"DataItem.Demandeur")& "|" &DataBinder.Eval(Container,"DataItem.Validee")& "|" &DataBinder.Eval(Container,"DataItem.Date_validation")%>' OnCommand="SupprimeDA">	
    </ASP:IMAGEBUTTON>
    </ITEMTEMPLATE>	
    </ASP:TEMPLATECOLUMN>
    </COLUMNS>
    <HeaderStyle BackColor="#e6e6e6" ForeColor="Black" Font-Size="12pt" Font-Bold="True" HorizontalAlign="Center" />
    <PagerStyle BackColor="#e6e6e6" ForeColor="Black" Font-Size="8pt" Font-Bold="True" HorizontalAlign="Right" Mode="NumericPages" Position="TopAndBottom" PageButtonCount="10" />
    </asp:DataGrid>

    Et voici la fonction que j'appelle pour ouvrir la fenetre et supprimer un enregistrement pour le premier ImageButton:
    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
     
        Public Sub SupprimeDA(ByVal monobject As System.Object, _
        ByVal e As System.Web.UI.WebControls.CommandEventArgs)
     
     
            TBLResultat.Visible = False
            TBLInfos.Visible = False
     
            Dim ServDemandeur As String
            Dim NomPrenom As String
            Dim SepareVar
            Dim VarNumero_DA
            Dim VarService_1
            Dim VarService_2
            Dim VarDemandeur
            Dim VarValidee
            Dim VarDate_validation
     
            'recupère les informations nécessaires en les séparant d'après le caractère "|"
            SepareVar = Split(monobject.CommandArgument, "|")
            VarNumero_DA = SepareVar(0)
            VarService_1 = SepareVar(1)
            VarService_2 = SepareVar(2)
            VarDemandeur = SepareVar(3)
            VarValidee = SepareVar(4)
            VarDate_validation = SepareVar(5)
     
     
            VerifiSignataires(monobject.CommandArgument, Nom & " " & Prenom)
            'If (Direction = "A" Or Direction = "CG" _
            If (Direction = "A" _
            Or NomPrenom.Concat(Nom & " " & Prenom) = VarDemandeur) _
            And monobject.ImageURL = "img/supprimer.gif" Then
     
                monobject.Attributes("onClick") = "javascript:" & _
                "window.open('Suppression.aspx?num=" & VarNumero_DA & "','fullscreen');return(false)"
     
            End If
        End Sub
    Merci d'avance si vous avez une solution.
    @ bientôt

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    C'est normal: tu ajoutes la fonction javascript lors du clic sur le bouton.

    A la génération de ta page, il n'y a pas de js sur ton bouton.
    1er clic: t'as ajoutes le js à ton bouton
    2ème clic: le js est présent et donc le fonctionnement attendu se produit bien.

    Tu dois ajouter le js au moment de la génération de ton DataGrid pour chacune des lignes

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse. Je vois le principe mais j'ai du mal à le mettre en place.
    Puis-je faire ça dans la fonction de création de mon datatable?
    Voici ma fonction de recherche pour remplir et afficher le datagrid :
    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
     
                    myAdapter.SelectCommand() = Commande
                    myAdapter.Fill(myDataset, "informations")
     
                    myDataTable = myDataset.Tables("informations")
     
     
                    Dim SQLRow As DataRow
                    Dim maSelection As DataRow()
                    Dim newMyDataTable As DataTable = myDataTable.Clone()
                    If Direction = "A" Or Direction = "CG" Then
                        maSelection = myDataTable.Select()
                    Else
                        maSelection = myDataTable.Select(StrSelect)
                    End If
     
                    For Each SQLRow In maSelection
                        newMyDataTable.ImportRow(SQLRow)
                    Next
     
                    If newMyDataTable.Rows.Count = 0 Then
                        TBLerreur.visible = True
                        DataGrid1.Databind()
                        Exit Sub
                    Else
                        TBLerreur.visible = False
                        DataGrid1.DataSource = newMyDataTable
                        DataGrid1.DataBind()
                    End If

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    La question a été traité à maintes reprises ici, fais une recherche avec le mot clé OnRowDataBound

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci!!
    Ca m'a beaucoup aidé. Tout fonctionne maintenant.
    Merci pour ton aide

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

Discussions similaires

  1. l'even CheckedChanged se lance deux fois pour un radiobouton
    Par aiglelibre dans le forum Développement Windows
    Réponses: 2
    Dernier message: 07/06/2013, 23h58
  2. cliquer deux fois pour ouvrir dans un nouvel onglet
    Par rosert dans le forum ASP.NET
    Réponses: 0
    Dernier message: 07/12/2012, 15h57
  3. Obligation de cliquer deux fois
    Par Juju54350 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/02/2011, 14h22
  4. Réponses: 6
    Dernier message: 14/04/2009, 09h14

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