Selectionner et supprimer ligne dans gridview

Résolu
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008 - 22 juil. 2008 à 13:51
cs_scoufild Messages postés 61 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 13 avril 2011 - 5 févr. 2009 à 10:26
bonjour à tous

j'explique mon petit soucis

j'ai crée un gridview qui m'affiche différents champs

maintenant mon probleme est que je n'arrive pas à selectionner une ligne et la supprimer définitivement du gridview!!

en faite ce gridview va permettre de visualiser des demandes et j'aimerai que la personne qui s'occupe de ses demandes lorsqu'elle sélectionne une ligne celle ci disparait mais lors d'une actualisation avec F5 cette ligne ne réapparaisse pas

je me demande si j'ai utilisé le bon outil aussi ou aussi est ce que cela est possible?

Merci d'avance

<!-- / message -->

16 réponses

ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
23 juil. 2008 à 16:48
Pour le problème lors de ta copie, il faudrait que tu dises comment tu fais.
Mais peut-être aurais-tu pu faire autrement, en évitant la copie.
Par exemple, tu pourrais ajouter à ta table "besoins" un nouveau champ, nommé par exemple 'Etat', que tu renseignerais avec un code de ton choix selon que la ligne est "traitée" ou non.
Je veux dire : ton souci vient ici de ce que tu veux tout à la fois supprimer une ligne et la conserver ailleurs. Mais rien ne t'empêche de la conserver dans la même table : si par exemple tu as la possibilité 'T' (= traité) ou 'N' (= non traité) dans un champ "Etat", il te suffit de préciser dans le where du select que tu ne veux afficher que ce qui n'a pas été traité, soit N.
Ensuite, tu pourrais créer un bouton dans un template field qui "supprimerait" fictivement ta ligne : en fait, tu changerais simplement l'état (en le passant de N à T par un update), de sorte que ta ligne ne serait plus affichée. Elle serait conservée dans ta table, mais ne s'afficherait plus dans le gridview.
Pour faire ça, si jamais ça t'intéresse, tu peux par exemple sur le onclick du button mis dans l'itemtemplate du templatefield du gridview t'inspirer de ceci (en vb) :
 
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)        Dim de As String "UPDATE Themes SET Etat 'T' WHERE idTheme = " & sender.namingcontainer.Cells(1).Text
        Dim ds As SqlDataSource = CType(Page.FindControl("SqlDataSource1"), SqlDataSource)
        ds.UpdateCommand = de
        ds.Update()
  End Sub

Mais peut-être quelque chose t'empêche-t-il de procéder ainsi ?

GGtry
3
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
23 juil. 2008 à 17:29
Salut,

Oui, dans le code j'ai utilisé l'une de mes tables. "Themes" est le nom de la table, "Etat" est le nom du champ dont je parle (que tu n'es pas obligé d'afficher dans le gridview d'ailleurs) et idTheme est l' identifiant-clef de ma table.
Ici, je suppose que tu crées une nouvelle colonne dans le gridview, de type templatefield, pour pouvoir y mettre un simple button asp, par exemple :

               
                   
               
 

Dans le Text du Button j'ai mis "supprimer", mais l'action dans le code Button2_Click ne supprime rien, elle ne fait qu'un update du champ "Etat" de la table dans la bdd.Comme dans ta gridview ne s'afficheraient que ce qui est marqué à 'N', il suffit de récupérer la ligne sur laquelle se trouve le bouton cliqué et de faire une requête update qui dit, pour l'id de la ligne du bouton, de changer l'état en le mettant à T (cf. Dim de As String "UPDATE Themes SET Etat 'T' WHERE idTheme = " & sender.namingcontainer.Cells(1).Text). De la sorte, la ligne ne sera plus affichée dans le gridview, mais elle sera encore présente dans la table de ta bdd.
sender.namingcontainer.Cells(1).Text, dans le code du précédent message, récupère l'id qui se trouve ici dans la colonne 2 du gridview (la première cell est 0, la deuxième 1, etc.).

GGtry
3
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
23 juil. 2008 à 00:57
Bonsoir,

Les mêmes causes produisent les mêmes effets.
Si ta source contient toujours ta ligne, ton gridview l'affichera. Comment alimentes-tu ton gridview ?

GGtry
0
cs_braahim Messages postés 7 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 23 juillet 2008
23 juil. 2008 à 01:04
je ponse que ce liens sera util pour vous
http://www.jmdoudoux.fr/microsoft/dotnet/datagrid.htm

si vous vouler plus d'info voila mon e-mail:  [mailto:iess_b@hotmail.fr iess_b@hotmail.fr]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
23 juil. 2008 à 08:05
Pour répondre a ggtry
j'alimente mon gridview avec une table dans uen base de données SQL Server 2000

Pour répondre a braahim
je regarde ton lien et je redis quoi

merci a vous 2 d'avoir pris le temps de regarder mon probleme
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
23 juil. 2008 à 08:16
je vous mets mon code:

<

asp:SqlDataSource
ID="SqlDataSource2"
runat="server"

ConnectionString="<%$ ConnectionStrings:PRODUCTIONConnectionString %>
"

DeleteCommand="DELETE FROM [Besoins] WHERE [Identifiant_B] = @Identifiant_B"

InsertCommand="INSERT INTO [Besoins] ([Date_FL], [Heure_FL], [Ligne], [NFL_FL], [CA_consommee], [Libelle], [Vis_1], [Quantite_consommee], [CA_2], [Libelle_2], [Vis_2], [Quantite_2], [CA_3], [Libell_3], [Vis_3], [Quantite_3], [CA_4], [Libelle_4], [Vis_4], [Quantite_4], [CA_5], [Libelle_5], [Vis_5], [Quantite_5], [CA_6], [Libelle_6], [Vis_6], [Quantite_6]) VALUES (@Date_FL, @Heure_FL, @Ligne, @NFL_FL, @CA_consommee, @Libelle, @Vis_1, @Quantite_consommee, @CA_2, @Libelle_2, @Vis_2, @Quantite_2, @CA_3, @Libell_3, @Vis_3, @Quantite_3, @CA_4, @Libelle_4, @Vis_4, @Quantite_4, @CA_5, @Libelle_5, @Vis_5, @Quantite_5, @CA_6, @Libelle_6, @Vis_6, @Quantite_6)"

SelectCommand="SELECT [Identifiant_B], [Date_FL], [Heure_FL], [Ligne], [NFL_FL], [CA_consommee], [Libelle], [Vis_1], [Quantite_consommee], [CA_2], [Libelle_2], [Vis_2], [Quantite_2], [CA_3], [Libell_3], [Vis_3], [Quantite_3], [CA_4], [Libelle_4], [Vis_4], [Quantite_4], [CA_5], [Libelle_5], [Vis_5], [Quantite_5], [CA_6], [Libelle_6], [Vis_6], [Quantite_6] FROM [Besoins]"

UpdateCommand="UPDATE [Besoins] SET [Date_FL] = @Date_FL, [Heure_FL] = @Heure_FL, [Ligne] = @Ligne, [NFL_FL] = @NFL_FL, [CA_consommee] = @CA_consommee, [Libelle] = @Libelle, [Vis_1] = @Vis_1, [Quantite_consommee] = @Quantite_consommee, [CA_2] = @CA_2, [Libelle_2] = @Libelle_2, [Vis_2] = @Vis_2, [Quantite_2] = @Quantite_2, [CA_3] = @CA_3, [Libell_3] = @Libell_3, [Vis_3] = @Vis_3, [Quantite_3] = @Quantite_3, [CA_4] = @CA_4, [Libelle_4] = @Libelle_4, [Vis_4] = @Vis_4, [Quantite_4] = @Quantite_4, [CA_5] = @CA_5, [Libelle_5] = @Libelle_5, [Vis_5] = @Vis_5, [Quantite_5] = @Quantite_5, [CA_6] = @CA_6, [Libelle_6] = @Libelle_6, [Vis_6] = @Vis_6, [Quantite_6] = @Quantite_6 WHERE [Identifiant_B] = @Identifiant_B">

<DeleteParameters>

<asp:Parameter
Name="Identifiant_B"
Type="Int32"
/>

</DeleteParameters>

<UpdateParameters>

<asp:Parameter
Name="Date_FL"
Type="DateTime"
/>

<asp:Parameter
Name="Heure_FL"
Type="String"
/>

<asp:Parameter
Name="Ligne"
Type="String"
/>

<asp:Parameter
Name="NFL_FL"
Type="Decimal"
/>

<asp:Parameter
Name="CA_consommee"
Type="String"
/>

<asp:Parameter
Name="Libelle"
Type="String"
/>

<asp:Parameter
Name="Vis_1"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_consommee"
Type="Int32"
/>

<asp:Parameter
Name="CA_2"
Type="String"
/>

<asp:Parameter
Name="Libelle_2"
Type="String"
/>

<asp:Parameter
Name="Vis_2"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_2"
Type="Int32"
/>

<asp:Parameter
Name="CA_3"
Type="String"
/>

<asp:Parameter
Name="Libell_3"
Type="String"
/>

<asp:Parameter
Name="Vis_3"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_3"
Type="Int32"
/>

<asp:Parameter
Name="CA_4"
Type="String"
/>

<asp:Parameter
Name="Libelle_4"
Type="String"
/>

<asp:Parameter
Name="Vis_4"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_4"
Type="Int32"
/>

<asp:Parameter
Name="CA_5"
Type="String"
/>

<asp:Parameter
Name="Libelle_5"
Type="String"
/>

<asp:Parameter
Name="Vis_5"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_5"
Type="Int32"
/>

<asp:Parameter
Name="CA_6"
Type="String"
/>

<asp:Parameter
Name="Libelle_6"
Type="String"
/>

<asp:Parameter
Name="Vis_6"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_6"
Type="Int32"
/>

<asp:Parameter
Name="Identifiant_B"
Type="Int32"
/>

</UpdateParameters>

<InsertParameters>

<asp:Parameter
Name="Date_FL"
Type="DateTime"
/>

<asp:Parameter
Name="Heure_FL"
Type="String"
/>

<asp:Parameter
Name="Ligne"
Type="String"
/>

<asp:Parameter
Name="NFL_FL"
Type="Decimal"
/>

<asp:Parameter
Name="CA_consommee"
Type="String"
/>

<asp:Parameter
Name="Libelle"
Type="String"
/>

<asp:Parameter
Name="Vis_1"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_consommee"
Type="Int32"
/>

<asp:Parameter
Name="CA_2"
Type="String"
/>

<asp:Parameter
Name="Libelle_2"
Type="String"
/>

<asp:Parameter
Name="Vis_2"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_2"
Type="Int32"
/>

<asp:Parameter
Name="CA_3"
Type="String"
/>

<asp:Parameter
Name="Libell_3"
Type="String"
/>

<asp:Parameter
Name="Vis_3"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_3"
Type="Int32"
/>

<asp:Parameter
Name="CA_4"
Type="String"
/>

<asp:Parameter
Name="Libelle_4"
Type="String"
/>

<asp:Parameter
Name="Vis_4"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_4"
Type="Int32"
/>

<asp:Parameter
Name="CA_5"
Type="String"
/>

<asp:Parameter
Name="Libelle_5"
Type="String"
/>

<asp:Parameter
Name="Vis_5"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_5"
Type="Int32"
/>

<asp:Parameter
Name="CA_6"
Type="String"
/>

<asp:Parameter
Name="Libelle_6"
Type="String"
/>

<asp:Parameter
Name="Vis_6"
Type="Int32"
/>

<asp:Parameter
Name="Quantite_6"
Type="Int32"
/>

</InsertParameters>

</asp:SqlDataSource>

<asp:GridView
ID="GridView1"
runat="server"
AutoGenerateColumns="False"

DataKeyNames="Identifiant_B"
DataSourceID="SqlDataSource2">

<Columns>

<asp:CommandField
ShowDeleteButton="True"
/>

<asp:BoundField
DataField="Identifiant_B"
HeaderText="Identifiant_B"

InsertVisible="False"
ReadOnly="True"
SortExpression="Identifiant_B"
/>

<asp:BoundField
DataField="Date_FL"
HeaderText="Date_FL"

SortExpression="Date_FL"
/>

<asp:BoundField
DataField="Heure_FL"
HeaderText="Heure_FL"

SortExpression="Heure_FL"
/>

<asp:BoundField
DataField="Ligne"
HeaderText="Ligne"
SortExpression="Ligne"
/>

<asp:BoundField
DataField="NFL_FL"
HeaderText="NFL_FL"

SortExpression="NFL_FL"
/>

<asp:BoundField
DataField="CA_consommee"
HeaderText="CA_consommee"

SortExpression="CA_consommee"
/>

<asp:BoundField
DataField="Libelle"
HeaderText="Libelle"

SortExpression="Libelle"
/>

<asp:BoundField
DataField="Vis_1"
HeaderText="Vis_1"
SortExpression="Vis_1"
/>

<asp:BoundField
DataField="Quantite_consommee"
HeaderText="Quantite_consommee"

SortExpression="Quantite_consommee"
/>

<asp:BoundField
DataField="CA_2"
HeaderText="CA_2"
SortExpression="CA_2"
/>

<asp:BoundField
DataField="Libelle_2"
HeaderText="Libelle_2"

SortExpression="Libelle_2"
/>

<asp:BoundField
DataField="Vis_2"
HeaderText="Vis_2"
SortExpression="Vis_2"
/>

<asp:BoundField
DataField="Quantite_2"
HeaderText="Quantite_2"

SortExpression="Quantite_2"
/>

<asp:BoundField
DataField="CA_3"
HeaderText="CA_3"
SortExpression="CA_3"
/>

<asp:BoundField
DataField="Libell_3"
HeaderText="Libell_3"

SortExpression="Libell_3"
/>

<asp:BoundField
DataField="Vis_3"
HeaderText="Vis_3"
SortExpression="Vis_3"
/>

<asp:BoundField
DataField="Quantite_3"
HeaderText="Quantite_3"

SortExpression="Quantite_3"
/>

<asp:BoundField
DataField="CA_4"
HeaderText="CA_4"
SortExpression="CA_4"
/>

<asp:BoundField
DataField="Libelle_4"
HeaderText="Libelle_4"

SortExpression="Libelle_4"
/>

<asp:BoundField
DataField="Vis_4"
HeaderText="Vis_4"
SortExpression="Vis_4"
/>

<asp:BoundField
DataField="Quantite_4"
HeaderText="Quantite_4"

SortExpression="Quantite_4"
/>

<asp:BoundField
DataField="CA_5"
HeaderText="CA_5"
SortExpression="CA_5"
/>

<asp:BoundField
DataField="Libelle_5"
HeaderText="Libelle_5"

SortExpression="Libelle_5"
/>

<asp:BoundField
DataField="Vis_5"
HeaderText="Vis_5"
SortExpression="Vis_5"
/>

<asp:BoundField
DataField="Quantite_5"
HeaderText="Quantite_5"

SortExpression="Quantite_5"
/>

<asp:BoundField
DataField="CA_6"
HeaderText="CA_6"
SortExpression="CA_6"
/>

<asp:BoundField
DataField="Libelle_6"
HeaderText="Libelle_6"

SortExpression="Libelle_6"
/>

<asp:BoundField
DataField="Vis_6"
HeaderText="Vis_6"
SortExpression="Vis_6"
/>

<asp:BoundField
DataField="Quantite_6"
HeaderText="Quantite_6"

SortExpression="Quantite_6"
/>

</Columns>

</asp:GridView>

<asp:Button
ID="Button1"
runat="server"
Height="44px"
Text="Page pr‚c‚dente"

Width="110px"
/>

</form>
0
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
23 juil. 2008 à 12:45
Bonjour,

Je ne vois pas quel est le problème dans ce que tu montres. La suppression devrait fonctionner.
Peux-tu décrire plus précisément ce qui se passe ?

GGtry
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
23 juil. 2008 à 14:33
La suppression marche nickel
je faisais nimp' (pas reveillé)
mais il y a quelques chose qui me plait pas
comme je travaille ave cune table lorsque je supprime une ligne ou des.
elle s'efface de ma table.
Pour y remédier j'ai crée une copie de cette table
mais elle me rentre les données en doublons
exemple:
je rentre comme ligne 12
13
14

je supprime 13

dans la table copier si je relance le lot DTS j'ai
12
13
14
12
14

tu comprends ce que j'essaye d'exxpliquer
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
23 juil. 2008 à 17:12
ta solution m'interesse beaucoup
mais a partir du Ensuite, tu pourrais créer un bouton dans un template field qui je décroche.
Je peux créer un champ mais comment la table va savoir que ce champ passe de N à T
il faut bien que dans mon gridview j'ai le critére Selectionner ou Supprimer
ici je pencherais plus par rapport à ta solution au Selectionner

pour ton bout de code le Theme c'est ta table?

je teste ceci demain
et encore merci de prendre le temps
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
24 juil. 2008 à 08:54
j'ai remis ton programme au mien voici
Protected

Sub Button2_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)

Dim de
AsString "UPDATE Besoins SET Etat 'T' WHERE Identifiant_B = " & sender.namingcontainer.Cells(0).Text

Dim ds
As SqlDataSource =
CType(Page.FindControl(
"SqlDataSource2"), SqlDataSource)ds.UpdateCommand = de

ds.Update()

End
Sub

Mais j'ai une erreur au niveau du ds.Update() il me met:
SqlException n'a pas été géré par le code utilisateur
ligne1 syntaxe incorrecte ver '='
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
24 juil. 2008 à 10:32
bon j'ai trouvé l'erreur je me suis tromlpé sur la valeur du Cell j'avais pas comptais la colonne du bouton
donc la ca me mets T dans la bonne ligne

mais ma ligne reste en vue et ca c'est pas bon

ca devait pas le faire automatiquement?
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
24 juil. 2008 à 11:30
bon et bien apres avoir refait mon sqlDatasource en lui disant de m'afficher le Champ Etat ayant comme is NULL
et bien mon gridview m'affiche que mes enregistrement NULL

merci beaucoup ggtr 
0
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
24 juil. 2008 à 11:54
Oui, il fallait ajouter une clause where au select.
Content que ça marche.

Bonne continuation.

GGtry
0
lg022 Messages postés 21 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 28 juillet 2008
24 juil. 2008 à 13:22
merci
le projet avec ca est fini
si on me demande pas autre chose
0
cs_scoufild Messages postés 61 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 13 avril 2011
5 févr. 2009 à 10:26
bonjour ,

comment je peux récupéré l'élément sélectionné au  gridview  asp.net  merci d'avance.
0
cs_scoufild Messages postés 61 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 13 avril 2011
5 févr. 2009 à 10:26
bonjour ,

comment je peux récupéré l'élément sélectionné au  gridview  asp.net  merci d'avance.
0
Rejoignez-nous