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 :

Javascript et ASP.NET, problème pour intégrer une variable ASP.NET dans une fenête javascript (confirm)


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut Javascript et ASP.NET, problème pour intégrer une variable ASP.NET dans une fenête javascript (confirm)
    Bonjour,

    Je souhaite ajouter un fenêtre de validation en javascript quand je clique sur un bouton dans ma page.

    Il s'agit d'un bouton permettant de faire une suppression.

    La fenêtre de validation est une fonction 'confirm' javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     protected void gvDisplayRange_RowCreated(object sender, GridViewRowEventArgs e)
        {
            GridViewRow myRow = e.Row;
            ImageButton ib = myRow.FindControl("imgbtnDeleteRange") as ImageButton;
     
            if (ib != null)
            {
                ib.Attributes["onClick"] = "return confirm('Confirmez vous la suppression de cette gamme ?')";
            }
        }
    (Le bouton est un ImageBouton, généré dynamiquement dans chaque ligne d'un GridView de données)


    Pour l'instant ça fonctionne :
    -> Je clique sur l'Imagebouton 'supprimer' dans une ligne de la listView
    -> Là, la fenêtre javascript 'Confirmer vous la suppression de cette gamme ?' apparaît.
    -> Si je clique sur le bouton 'OK' de cette fenêtre javascript "confirm", mon évènement OnClick écrit de le code behind s'exécute (Cet évènement exécute la suppression de la gamme)
    -> Si je clique sur le bouton 'Annuler' de la fenêtre javascript "confirm", la fenêtre javascript se ferme et l'évènement OnClick ne s'exécute pas.


    Mon problème est que je veux rajouter une données dynamique dans cette fenêtre javascript "confirm".
    En gros le message de cette fenêtre doit être :
    'Confirmer vous la suppression de cette gamme ?
    x articles(s) concerné(s)'

    La donnée dynamique à ajouter est x.

    x est une donnée de type string.
    x est une propriété définie dans ma page aspx.cs

    Comment ajouter cette données dans la fenêtre javascript "confirm" ?


    __________ __________
    METHODE N°1 :

    J'ai essayer comme ceci :

    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
    protected void gvDisplayRange_RowCreated(object sender, GridViewRowEventArgs e)
        {
     
            GridViewRow myRow = e.Row;
            ImageButton ib = myRow.FindControl("imgbtnDeleteRange") as ImageButton;
     
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("var nbArticle = '<%=nbArticlesConcernedByDelete %>';");
            sb.AppendLine("return confirm('Confirmez vous la suppression de cette gamme ?' + nbArticle + ' article(s) concerné(s)')");
     
            if (ib != null)
            {
                ib.Attributes["onClick"] = sb.ToString();
            }
        }

    Mais la fenêtre javascript m'affiche ceci :

    'Confirmer vous la suppression de cette gamme ?
    <%=nbArticlesConcernedByDelete %> article(s) concerné(s)'


    __________ __________
    METHODE N°2 :

    Il y a une autre façon de faire où j'arrive à afficher ma données x dans la fenêtre javascript :

    Dans ma page aspx, j'écris ma fonction javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript" language="javascript">
     
        function DeleteRangeWarning()
         {
             var nbArticle = '<%=nbArticlesConcernedByDelete %>';
             return confirm('Confirmez vous la suppression de cette gamme ? \n ' + nbArticle + ' articles impactés')
        }
    </script>

    Toujours dans la page aspx, j'appelle cette fonction dans l'évènement "OnClientClick" de mon imageBouton de suppression :

    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
    <asp:GridView runat="server" ID="gvDisplayRange"  
                        AutoGenerateColumns="false" OnRowCommand="gvDisplayRange_RowCommand"
                        OnRowCreated="gvDisplayRange_RowCreated" >
                    <Columns>
                        <asp:BoundField ... />  
                        <asp:BoundField ... />
                        <asp:TemplateField HeaderText="Action">
                            <ItemTemplate>
                                <asp:ImageButton ID="imgbtnSetRange" runat="server" ImageUrl="~/images/iconEdit.png" AlternateText="Modifier la Gamme" CommandName="ModifierAvertissement" CommandArgument='<%# Eval("idOscaroEPCLevelRanges")%>'></asp:ImageButton> 
                                <asp:ImageButton ID="imgbtnDeleteRange" runat="server" ImageUrl="~/images/iconErase.png" AlternateText="Supprimer la Gamme"  CommandName="SupprimerAvertissement" CommandArgument = '<%# Eval("idGamme")%>' 
                                OnClientClick="DeleteRangeWarning();" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
    </asp:GridView>
    Le problème c'est qu'avec cette façon de faire, le fait d'appuyer sur 'OK' ou 'Annuler' dans ma fenêtre javascript "confirm" n'a aucune influence sur le déclenchement de mon évènement OnRowCommand écrit dans le code behind (l'évènement qui exécute la suppression) : Cet évènement sera TOUJOURS DECLENCHE.

    __________ __________

    Voilà mon problème.
    Quelqu'un a t-il la solution :

    - soit dans la méthode n°1, arriver à afficher la donnée dans la fenêtre javascript "confirm"

    - soit dans la méthode n°2, faire en sorte que la méthode OnClientClick ait une influence sur le déclenchement de la méthode OnRowCommand



    Merci de votre aide.

  2. #2
    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
    Points : 8 734
    Points
    8 734
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ib.Attributes["onClick"] = string.Format("return confirm('Confirmez vous la suppression de cette gamme ? {0} articles concernés')", taValeur);

  3. #3
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Merci beaucoup.

    Simple en fait, je suis vite parti en live tout seul.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/01/2015, 00h57
  2. Réponses: 0
    Dernier message: 26/01/2011, 10h24
  3. Réponses: 1
    Dernier message: 26/12/2010, 22h20
  4. Réponses: 3
    Dernier message: 06/09/2006, 10h06
  5. Réponses: 6
    Dernier message: 29/01/2006, 02h21

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