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
| Private Sub InsertRows()
'*** UNE insertion de ligne(s) ne peut se faire qu'en amont d'une ligne ou de la ligne d'une ou plusieurs cellules sélectionnées.
If DataGridView1.SelectedCells.Count > 0 Then
'*** dtFact représente une table de donnée et charge en mémoire les données de la table choisie du Dataset.
'*** drFact représente une ligne de données du DataTable.
'*** l'objet DataRow, avec ses propriétés et méthodes permet de récupérer, évaluer, insérer, supprimer et mettre à jour les valeurs du DataTable.
'*** aireSelectionnee est un tableau qui contiendra la liste de toutes les cellules sélectionnées.
Dim dtFact As DataTable = ds.Tables("DET_DEVIS")
Dim drFact As DataRow
Dim aireSelectionnee As ArrayList = New ArrayList
For Each cell As DataGridViewCell In DataGridView1.SelectedCells
aireSelectionnee.Add(cell.RowIndex)
Next
'*** TRI cette liste, obtient le n° de la première et de la dernière ligne de la sélection.
'*** EN cas de sélection multiple de cellules ou de lignes, par choix arbitraire,
'*** l'insertion se fera avant la ligne de moindre rang de la sélection et le nombre de lignes insérées
'*** correspondra au nombre de lignes sélectionnée.
Dim premRowselect As Integer
Dim derRowSelect As Integer
aireSelectionnee.Sort()
premRowselect = CInt(aireSelectionnee(0))
derRowSelect = CInt(aireSelectionnee(aireSelectionnee.Count - 1))
Dim nbre As Integer = 1
For nbre = 1 To derRowSelect + 1 - premRowselect
drFact = dtFact.NewRow()
dtFact.Rows.InsertAt(drFact, premRowselect)
Next
'*** Efface la sélection en cours pour sélectionner uniquement la première des lignes insérées.
DataGridView1.ClearSelection()
DataGridView1.Rows(premRowselect).Selected = True
End If
merci d'avance
End Sub |
Partager