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.
(Le bouton est un ImageBouton, généré dynamiquement dans chaque ligne d'un GridView de données)
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 ?')"; } }
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 :
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.
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>
__________ __________
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.
Partager