[VB.Net] Masquer les lignes dans un DataGridView
bonjour tout le monde ,
j'aimerai masquer tout les lignes sélectionnés dans ma datagrid
dans j'ai essayé avec le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Try
Dim dgvRow As DataGridViewRow
For Each dgvRow In DataGridView1.SelectedRows
DataGridView1.Rows(dgvRow.Index).Visible = False
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Erreure !")
End Try |
cela ne fonctionne pas :calim2: il m'affiche le message :
Citation:
---------------------------
Erreure !
---------------------------
Impossible de rendre invisible la ligne associée à la position du gestionnaire de devise.
---------------------------
OK
---------------------------
quelqu'un a une solution ? Merci d'avance .
masquer lignes datagridview
bonjour xweb-10
il n'est pas possible de rendre des lignes d'un datagridview lie à une source de donnees invisibles (cela est valable pour la majorite des controles liees).
neamoins voici un detour.
c'est d'avoir une prop dans la source de donnees (table ,liste ou autre dictionary ) de type boolean (visible=true,visible=false).
pour le dgv cela devient simple car on peut utiliser dataview comme filtre.
voici un exemple d'une table ou existe un champ intitule "visible" de type boolean.
Code:
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
|
Public Class frmSelectionDGV
'Le dataview lie au dataset et au datable
Private filterView As DataView = New DataView
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
'fill de la datable
Me.Personnel1TableAdapter1.Fill(Me.PersonnelDataSet1.Personnel1)
Me.dgView.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Me.dgView.AllowUserToAddRows = True
'liaison à datasource DS et au datatable DT
filterView = New DataView(Me.PersonnelDataSet1.Personnel1)
'filtre sur tous les enregistrements visibles par defaut
filterView.RowFilter = "visible = 'True'"
Me.dgView.DataSource = filterView
End Sub
'met le champ "visible" à false (le dgv est binde à la table et par consequent c'est repercute dans le datable)
Private Sub btnSelectionInvisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectionInvisible.Click
For Each dgv As DataGridViewRow In Me.dgView.SelectedRows
Me.dgView.Rows(dgv.Index).Cells.Item(6).Value = False
Next
'rafraichit dgv
Me.dgView.DataSource = filterView
End Sub
'parcours du datable et remise du champ "visible" à true
Private Sub btnSelectionVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectionVisible.Click
For Each dt As DataRow In Me.PersonnelDataSet1.Personnel1.Rows
If dt.Item("visible") = False Then
dt.Item("visible") = True
End If
Next
'rafraichit dgv
Me.dgView.DataSource = filterView
End Sub
End Class |
bon code....