DataGridView

Résolu
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 31 juil. 2011 à 20:28
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 31 juil. 2011 à 23:49
Bonjour a tous,

Voila un probleme interessant (enfin je crois) sur un DatagGridView. Mais, je ne sais pas comment m'y prendre.

Avec les proprietes (dgvMyGrid):
MultiSelect => True
SelectionMode => FullRowSelect

Pour enlever les ROWs selectionnees, j'utilise le code ci-dessous:
For Each selectedRow As DataGridViewRow In dgvMyGrid.SelectedRows
    dgvMyGrid.Rows.Remove(selectedRow)
Next


Mais si je veux enlever les ROWs non-selectionnees, comment faire?
Et bien sur, garder sur mon DataGridView celles qui sont selectionnees!

Toutes idees sont les bienvenues.
Merci,

JLuc01

4 réponses

NHenry Messages postés 15129 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 juin 2024 159
31 juil. 2011 à 23:29
Bonjour,

Tu peux faire un code du genre :
Dim lLst as List(Of DataGridViewRow )=New List(Of DataGridViewRow )

For each lLigne as DataGridViewRow in dgvSearchQuote.Rows
If not dgvSearchQuote.SelectedRows.Contains(lLigne) Then
lLst.Add(lLigne)
end If
Next


Et dans lLst tu as la liste des lignes non sélectionnées.

---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
31 juil. 2011 à 23:49
Super. Ca marche!

C'etait la bonne facon de faire.
Maintenant, j'utilise le code suivant:

Dim lLst As List(Of DataGridViewRow) = New List(Of DataGridViewRow)
For Each row As DataGridViewRow In dgvSearchQuote.Rows
    If Not dgvSearchQuote.SelectedRows.Contains(row) Then
       lLst.Add(row)
    End If
Next
For i = 0 To lLst.Count - 1
    dgvSearchQuote.Rows.Remove(lLst(i))
Next


Merci encore.

JLuc01
3
NHenry Messages postés 15129 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 juin 2024 159
31 juil. 2011 à 22:31
Bonjour,

Sur quelle version de VB tu es ?

Il te suffit de controler si la ligne est sélectionnée.

En 2008 ou + :
For Each selectedRow As DataGridViewRow In dgvMyGrid.Rows.Where(Function(pRow) Not dgvMyGrid.SelectedRows.Contains pRow).ToArray()
 dgvMyGrid.Rows.Remove(selectedRow)
Next



---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
31 juil. 2011 à 23:17
Salut,

Merci de t'interesser a mon cas.
Je suis en VB2008.

J'ai essaye ton code, mais j'ai une erreur sur: dgvMyGrid.Rows.Where(
Erreur: 'Where' is not a member of 'System.Windows.Forms.DataGridViewRowCollection'

Ce code me parait un peu sophistique pour moi.
J'avais essaye quelquechose du genre:
For Each selectedRow As DataGridViewRow In Not dgvSearchQuote.SelectedRows


Mais, VB n'apprecie pas le In Not.

JLuc01
0
Rejoignez-nous