Bonjour tout le monde...
Je sais qu'il existe beaucoup de discussion à propos de la suppression de lignes des GridView, mais rien de ce que j'ai pu lire et tester a réglé mon problème...
Voila la synthaxe de mon GridView dans le code ASP :
Celui-ci est alimenté par une requête SQL qui se trouve dans mon code C#, car il affiche différentes données selon la recherche que j'effectue précédemment, pour ça que je ne suis pas passée par le mode designer pour ceux qui se poseraient la question...
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
56
57
58
59
60 <asp:GridView ID="gvSalarie" runat="server" AllowPaging="True" AllowSorting="True" DataKeyNames="matricule,typeDocument" AutoGenerateColumns="False" SkinID="tableMaitre" OnSelectedIndexChanged="gvSalarie_SelectedIndexChanged" OnDataBound="gvSalarie_DataBound" OnRowDataBound="gvSalarie_RowDataBound" OnSorting="gvSalarie_Sorting" Width="95%"> <Columns> <asp:BoundField DataField="societe" HeaderText="Société" SortExpression="societe"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="12.04%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="unite" HeaderText="Unité" SortExpression="unite"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="14.46%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="groupeAgence" HeaderText="Groupe Agence" SortExpression="groupeAgence"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="14.46%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="agence" HeaderText="Agence" SortExpression="agence"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="14.46%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="categorie" HeaderText="Catégorie" SortExpression="categorie"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="5.42%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="matricule" HeaderText="Matricule" SortExpression="matricule"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="5.42%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="nom_prenom" HeaderText="Nom Prénom" SortExpression="nom_prenom"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="14.46%" CssClass="monGridView"/> </asp:BoundField> <asp:BoundField DataField="TypeDocument" HeaderText="Type Document" SortExpression="TypeDocument"> <HeaderStyle CssClass="monGridView"/> <ItemStyle Width="12.04%" CssClass="monGridView"/> </asp:BoundField> <asp:TemplateField> <HeaderStyle HorizontalAlign="Center" /> <ItemTemplate> <asp:ImageButton ID="afficheDocument" runat="server" OnClick="afficheDocument_Click" /> </ItemTemplate> <ItemStyle Width="2.41%" /> </asp:TemplateField> <asp:TemplateField> <HeaderStyle HorizontalAlign="Center" /> <HeaderTemplate> <asp:CheckBox ID="lesSelections" runat="server"/> </HeaderTemplate> <ItemStyle Width="2.41%" HorizontalAlign="Center" /> <ItemTemplate> <asp:CheckBox ID="uneSelection" runat="server" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Voici maintenant mon code de suppression dans la partie C# :
En fait, y'a une chose que je ne comprends pas, c'est que lorsque je débogue et que je fais du pas à pas, la ligne
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 protected void btSupprimer_Click(object sender, EventArgs e) { recherche(); string requete; SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossIndiv;Integrated Security=True"); List<string[]> list = new List<string[]>(); int nbLigne = gvSalarie.Rows.Count; for (int i = 0; i < nbLigne; i++) { if (((CheckBox)gvSalarie.Rows[i].FindControl("uneSelection")).Checked) { list.Add(new string[2]{gvSalarie.DataKeys[i]["matricule"].ToString(), gvSalarie.DataKeys[i]["typeDocument"].ToString()}); try { if (connexion.State == ConnectionState.Closed) { connexion.Open(); } requete = "DELETE FROM [TABLEAU] " + "WHERE [matricule] = " + gvSalarie.DataKeys[i]["matricule"].ToString() + " " + "AND [typeDocument] = " + gvSalarie.DataKeys[i]["typeDocument"].ToString(); // Exécution de la requête et affichage du GridView SqlCommand commande = new SqlCommand(requete, connexion); SqlDataAdapter sqlDA = new SqlDataAdapter(commande); DataSet ds = new DataSet(); sqlDA.Fill(ds); gvSalarie.DataSource = ds; gvSalarie.DataBind(); EnableViewState = true; commande.Dispose(); } catch (Exception ex) { Console.WriteLine(ex); } gvSalarie.DeleteRow(i); } } if (list.Count > 0) { Session["ListeDocSalarie"] = list; } recherche(); }ne fonctionne pas : je ne rentre pas dans la condition même si ma ligne est bien "checkée".
Code : Sélectionner tout - Visualiser dans une fenêtre à part (((CheckBox)gvSalarie.Rows[i].FindControl("uneSelection")).Checked)
Moi je ne vois pas où est la problème dans ce code et je suis ouverte à toutes critiques... lol
>>> Redouane, au secours!!! lol
Partager