Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONFIRMER LA SUPPRESSION LORS D'UN CLICK SUR UN BOUTON COMMANDNAME="DELETE" D'UN DATAGRID


Information sur la source

Catégorie :Astuces Source .NET ( DotNet ) Classé sous : datagrid, confirmation, suppression Niveau : Débutant Date de création : 20/02/2005 Date de mise à jour : 22/02/2005 19:12:07 Vu : 15 049

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note


Description

Si comme moi vous avez fait un datagrid, et vous avez autoriser la suppression, via les commandes d'un datagrid. Vous vous êtes surement sentis genés par le fait que lorsque vous cliquer sur le lien, l'element soit directement supprimé.

Voici l'astuce qui va permettre d'afficher une fenetre javascript, lors d'un click sur le lien, et ca sans faire de postback.

C'est relativement simple, mais étant donné que je viens de mettre presque une heure pour trouver le truc, je vous le met ici.

Les quelques lignes ci dessous, recherchent le controle qui fait la suppression, ici son id est linkbutton4, et ensuite rajoute l'attribut onclick, avec un petit bout de code javascript.


La fonction CType(e.Item.DataItem, DataRowView).Row permet de connaitre la ligne en cours ensuite pour l'exemple j'ai mis CType(e.Item.DataItem, DataRowView).Row.Item("ID").ToString pour connaitre l'ID de la ligne a supprimé.
 

Source

  • "Le datagrid doit ressembler à ca : "
  • <asp:templatecolumn>
  • <itemtemplate>
  • <asp:linkbutton id="Linkbutton4" runat="server" text="Supprimer" commandname="Delete" causesvalidation="false">
  • <img alt="Supprimer" src="images/delete.gif" border="0" />
  • </asp:linkbutton>
  • </itemtemplate>
  • </asp:templatecolumn>
  • "Puis ajouter ca dans votre fichier de Code Behind"
  • Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
  • If Not e.Item.FindControl("Linkbutton4") Is Nothing Then
  • CType(e.Item.FindControl("Linkbutton4"), LinkButton).Attributes("onclick") = "return confirm('Voulez-vous vraiment supprimer la ligne N°" & CType(e.Item.DataItem, DataRowView).Row.Item("ID").ToString & "?');"
  • End If
  • End Sub
"Le datagrid doit ressembler à ca : "

	<asp:templatecolumn>
		<itemtemplate>
			<asp:linkbutton id="Linkbutton4" runat="server" text="Supprimer" commandname="Delete" causesvalidation="false">
				<img alt="Supprimer" src="images/delete.gif" border="0" />
			</asp:linkbutton>
		</itemtemplate>
	</asp:templatecolumn>


"Puis ajouter ca dans votre fichier de Code Behind" 

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        If Not e.Item.FindControl("Linkbutton4") Is Nothing Then
            CType(e.Item.FindControl("Linkbutton4"), LinkButton).Attributes("onclick") = "return confirm('Voulez-vous vraiment supprimer la ligne N°" & CType(e.Item.DataItem, DataRowView).Row.Item("ID").ToString  &  "?');"
        End If
    End Sub

Conclusion

J'attends vos commentaires :)
 

Historique

22 février 2005 19:12:07 :
J'ai rajouté la possibilité de rajouter un champ de la ligne en cours, dans le message JS

Commentaires et avis

signaler à un administrateur
Commentaire de SuperBouly le 22/02/2005 06:28:07

J'ai pas encore testé, mais ça va servir !!
Il reste à rajouter dans le message javascript le contenu d'une colonne pour obtenir quelquechose du genre :
"voulez-vous vraiment supprimer Mr Machin de la liste ?"
As-tu quelquechose d'aussi fulgurant?
Gilles

signaler à un administrateur
Commentaire de jesusonline le 22/02/2005 18:32:17 administrateur CS

Je n'ai pas voulu  complexifier la source, mais bien sur que c'est possible.

Voici la ligne magique

CType(e.Item.DataItem, DataRowView).Row.Item("Name").ToString  

Finalement ca complique peut etre pas tant que ca, je vais mettre à jour

Cyril

signaler à un administrateur
Commentaire de SuperBouly le 23/02/2005 09:21:14

Ouh ! J'ai perdu une occasion de me taire...

signaler à un administrateur
Commentaire de jesusonline le 23/02/2005 10:02:30 administrateur CS

Non, t'as bien fait de demander, car c'est surement une chose que beaucoup de personnes aurait cherché.

Je tient à preciser que si le client n'accepte pas Javascript, cela supprime sans demander l'avis.

Cyril

signaler à un administrateur
Commentaire de SuperBouly le 24/02/2005 16:33:45

J'ai testé, ça marche très bien.
Je l'ai testé sur un site sans code behind, développé sous DreamWeaver. Le serveur plante sur l'instruction :
CType(e.Item.DataItem, DataRowView).Row.Item("ID ").ToString ,
et déclare le cast non valide (pourquoi ?) Je dois écrire à la place :
e.Item.DataItem("ID ").ToString,  et là tout va très bien.
Si cette remarque peut profiter à quelqu'un&#8230;
Gilles

signaler à un administrateur
Commentaire de dobtom25 le 25/04/2005 15:40:22

J'aimerais bien savoir la syntaxe pour la suppression de la ligne en cours...
Merci

signaler à un administrateur
Commentaire de cleonat le 07/08/2005 19:46:19

Super !!!! J'avais très peur car on me donnais des exemples avec des fichiers .js et j'y connais rien
En 15 sec j'ai intégré ton code

Un mega merci

signaler à un administrateur
Commentaire de duce_foutou le 24/08/2005 00:33:34

voila j'ai teste le code et j'ai voulu plutot mettre le bout de code behind dans le datagride_delecommande ca ne marche pas j'aimerai de l'aide
voici mon code
Private Sub dgChaine_deleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgChaine.DeleteCommand
        Dim iChaine_ID As Int32 = CType(dgChaine.DataKeys(e.Item.ItemIndex), Int32)
        Dim iResult As Int32
        'Dim oConn As New OleDb.OleDbConnection(getConnString)
        Dim sSQL As String
        sSQL = String.Format("Delete From Chaine WHERE Chaine_Id=" & iChaine_ID)
        Dim oCon As New SqlClient.SqlConnection(ConnString)
        Dim oComm As New SqlClient.SqlCommand(sSQL, oCon)
        If Not e.Item.FindControl("Button2") Is Nothing Then
            CType(e.Item.FindControl("Button2"), Button).Attributes("onclick") = "return confirm('Voulez-vous vraiment supprimer la ligne N°" '& CType(e.Item.DataItem, DataRowView).Row.Item("ID").ToString & "?');"
        End If
        oCon.Open()
        oComm.ExecuteNonQuery()
        oComm.Dispose()
        oCon.Close()
        dgChaine.EditItemIndex = -1
        BindData()
    End Sub

signaler à un administrateur
Commentaire de outofcontrol le 08/09/2005 11:52:42

Un GROS GROS Merci à toi pour cette source et toutes les autres postées. C'est une aide precieuse pour moi

OutOfControl

signaler à un administrateur
Commentaire de miss11 le 17/05/2006 17:09:01

Le code de ctype ressemble a koi ??

signaler à un administrateur
Commentaire de steph95140 le 20/06/2006 10:12:02

ENORME, ce si minuscule bout de code ^^
Je cherchais encore, il y a qques jours comment l'on pouvais faire XD

voici le bout de code pour ceux qui code en C# :

private void dgEcran_ItemDataBound(object sender, DataGridItemEventArgs e) {
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
      // Récupère le control
      LinkButton Delete = (LinkButton)e.Item.Cells[e.Item.Cells.Count - 1].Controls[0];
      // Ajoute la fonction
      Delete.Attributes.Add("onclick", "return confirm('Voulez-vous vraiment supprimer \\'" + e.Item.Cells[1].Text + "\\' ?');");
}
}

signaler à un administrateur
Commentaire de cbu le 31/10/2006 14:06:35

Bon bah j'ai mis ma note .. :)
adapté à mon Gridview cela marche du feu :

        If Not e.Row.FindControl("imgbtnActionDelete") Is Nothing Then
            CType(e.Row.FindControl("imgbtnActionDelete"), ImageButton).Attributes("onclick") = "return confirm('Are you sure you want to remove this record ?');"
        End If

signaler à un administrateur
Commentaire de amenedemtg le 02/03/2007 11:36:15

Salut je suis un debutant comment pourais je adapter ce bout de code a mon datagrid //je code en c#//
Merci

signaler à un administrateur
Commentaire de harras le 20/11/2008 14:39:21

Besoin d'aide !!!

mon code BtLink.OnclientClick ="Appel Fonction js" dans une grid view marche très bien .
Mon problèlme c'est quand il y'a bcp d'enregistrement 800 par exemple le temps de chargement de ma page aspx est lent . presque 2 minute
Aprés le chargement sa fonction bien

mon code est le suivant:

Protected Sub grVehicule_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grVehicule.RowDataBound
If Not e.Row.FindControl("Linkbutton2") Is Nothing Then
CType(e.Row.FindControl("LinkButton2"), LinkButton).Attributes("onclick") = "CreateMm();return false;"
End If
Endsub

Merci d'avance!!!

signaler à un administrateur
Commentaire de harras le 20/11/2008 14:42:37

POUR  AMENEDEMTG:
LA convertion du code :

If Not e.Row.FindControl("imgbtnActionDelete") Is Nothing Then
            CType(e.Row.FindControl("imgbtnActionDelete"), ImageButton).Attributes("onclick") = "return confirm('Are you sure you want to remove this record ?');"

EN C#:

if ((e.Row.FindControl("imgbtnActionDelete") != null)) {
       ((ImageButton)e.Row.FindControl("imgbtnActionDelete")).Attributes("onclick") = "return confirm('Are you sure you want to remove this record ?');";
    }
Pour faire la convertion C#>>VB.Net ou l'inverse cliquez ici:
http://www.developerfusion.com/tools/convert/vb-to-csharp/

signaler à un administrateur
Commentaire de harras le 20/11/2008 14:44:12

J'ai Besoin de votre aide !!!
OnclientClick ou button.Attributs.add("Onclick",js .....etc
mon code BtLink.OnclientClick ="Appel Fonction js" dans une grid view marche très bien .
Mon problèlme c'est quand il y'a bcp d'enregistrement 800 par exemple le temps de chargement de ma page aspx est lent . presque 2 minute
Aprés le chargement sa fonction bien

mon code est le suivant:

Protected Sub grVehicule_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grVehicule.RowDataBound
If Not e.Row.FindControl("Linkbutton2") Is Nothing Then
CType(e.Row.FindControl("LinkButton2"), LinkButton).Attributes("onclick") = "CreateMm();return false;"
End If
Endsub

Merci d'avance!!!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

suppression d une colonne dans un datagrid [ par jordan2345 ] benj ai un grand besoin d'aide pour une datagrid. je l initialise avec une procedure stockée. J en ai deja fait sauf que d habitude je connais les col Suppression d'une ligne dans un datagrid [ par Pepin21 ] Bonjour,voil&#224; mon probl&#232;me : je remplie un datagrid avec un DataReader. Au click du bouton "annuler" je voudrais que les lignes du datagrid& confirmation de suppression [ par Stef ] Salut à tous!Sauriez vous me dire comment je peux faire pour créer une page popup type de demande de confirmation de suppression d'enregistrement ds u suppression d'une ligne dans un datagrid [ par narjisovish ] bonjour je voudrais supprimer une ligne de mon datagrid ki est li&#233;e a une base de donn&#233;es oracle voila le code Sub dgData_Delete(ByVal obj A récuperer une cellule d'un datagrid [ par narjisovish ] Comment fait-on pour afficher une cellule d'une ligne r&#233;cup&#233;r&#233;e d'un datagrid (+d'autres &#233;l&#233;ments concernant cette cellule) d colonne de datagrid et tri ... [ par Thanos_the_yopper ] Bonjour, j'ai un petit souci avec un datagrid : j'ajoute dynamiquement des colonnes dans ma datagrid de cette facon : BoundColumn dgc = new BoundCo DataGrid et ViewState [ par benjiiim94 ] Bonjour, J'ai un probl&#232;me pour cr&#233;er un datagrid qui utilise le viewstate, plus pr&#233;cisemment ce probl&#232;me l'&#233;v&#233;nement o récuperer une cellule d'un datagrid [ par narjisovish ] Comment fait-on pour afficher une cellule d'une ligne r&#233;cup&#233;r&#233;e d'un datagrid (+d'autres &#233;l&#233;ments concernant cette cellule) d Problème Pagination DataGrid : dernière page [ par Toub63 ] Bonjour,J'ai un probl&#232;me avec la pagination dans un datagridJ'ai mis au niveau du datagrid :&nbsp;AllowPaging=truePageSize=20DataSource=MondataVi


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.