Selectionner et supprimer ligne dans gridview [Résolu]

lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 22 juil. 2008 à 13:51 - Dernière réponse : cs_scoufild 63 Messages postés mercredi 12 décembre 2007Date d'inscription 13 avril 2011 Dernière intervention
- 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 -->
Afficher la suite 

16 réponses

Répondre au sujet
ggtry 417 Messages postés vendredi 13 juin 2008Date d'inscription 21 juillet 2010 Dernière intervention - 23 juil. 2008 à 16:48
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ggtry
ggtry 417 Messages postés vendredi 13 juin 2008Date d'inscription 21 juillet 2010 Dernière intervention - 23 juil. 2008 à 17:29
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ggtry
ggtry 417 Messages postés vendredi 13 juin 2008Date d'inscription 21 juillet 2010 Dernière intervention - 23 juil. 2008 à 00:57
0
Utile
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
Commenter la réponse de ggtry
cs_braahim 7 Messages postés dimanche 13 juillet 2008Date d'inscription 23 juillet 2008 Dernière intervention - 23 juil. 2008 à 01:04
0
Utile
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]
Commenter la réponse de cs_braahim
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 23 juil. 2008 à 08:05
0
Utile
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
Commenter la réponse de lg022
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 23 juil. 2008 à 08:16
0
Utile
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>
Commenter la réponse de lg022
ggtry 417 Messages postés vendredi 13 juin 2008Date d'inscription 21 juillet 2010 Dernière intervention - 23 juil. 2008 à 12:45
0
Utile
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
Commenter la réponse de ggtry
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 23 juil. 2008 à 14:33
0
Utile
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
Commenter la réponse de lg022
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 23 juil. 2008 à 17:12
0
Utile
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
Commenter la réponse de lg022
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 24 juil. 2008 à 08:54
0
Utile
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 '='
Commenter la réponse de lg022
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 24 juil. 2008 à 10:32
0
Utile
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?
Commenter la réponse de lg022
lg022 21 Messages postés jeudi 24 avril 2008Date d'inscription 28 juillet 2008 Dernière intervention - 24 juil. 2008 à 11:30
0
Utile
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 
Commenter la réponse de lg022
ggtry 417 Messages postés vendredi 13 juin 2008Date d'inscription 21 juillet 2010 Dernière intervention - 24 juil. 2008 à 11:54
0
Utile
Oui, il fallait ajouter une clause where au select.
Content que ça marche.

Bonne continuation.

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

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

comment je peux récupéré l'élément sélectionné au  gridview  asp.net  merci d'avance.
Commenter la réponse de cs_scoufild

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.