Tempus01
Messages postés81Date d'inscriptionmercredi 6 janvier 2021StatutMembreDernière intervention27 septembre 2022
-
2 avril 2022 à 13:16
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023
-
4 avril 2022 à 17:59
Bonjour le Forum,
Je souhaite remplir mon DataGridview en récupèrent les données enregistrer dans un fichier text, actuellement seul le code qui sauvegarde les données fonctionne.
Dim writer As TextWriter = New StreamWriter("C:\Users\All Users\ABC.text")
For i As Integer = 0 To DataGridView1.Rows.Count - 2 Step +1
For j As Integer = 0 To DataGridView1.Columns.Count - 1 Step +1
writer.Write(vbTab & DataGridView1.Rows(i).Cells(j).Value.ToString() & vbTab & "|")
Next
writer.WriteLine("")
writer.WriteLine("---------------------------------------------")
Next
writer.Close()
MessageBox.Show("Data Exported")
et je bloque avec le code qui récupère les données pour remplir le DataGridView
Dim lines() As String
Dim vals() As String
' get lines from the text file
lines = File.ReadAllLines("C:\Users\All Users\ABC.text")
' For i As Integer = 0 To lines.Length - 1 Step +1 ' lines
For i As Integer = 0 To lines.Length - 2 Step +1 ' lines
vals = lines(i).ToString().Split(CChar(("|")))
Dim row(vals.Length - 1) As String
For j As Integer = 0 To vals.Length - 1 Step +1 ' columns
row(j) = vals(j).Trim()
Next j
Table.Rows.Add(row)
Next i
Je sollicite votre aide afin de corriger le code qui récupère les données, l'erreur est sur Table.Rows.Add(row)
Merci à vous.
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023622 3 avril 2022 à 15:25
Bonjour
Je me permets d’attirer ton attention sur le fait que l’approche du pivert est peut-être nouvelle pour toi, mais elle correspond à l’esprit de VB6.
VB.Net est un langage objet et à été pensé pour que les contrôles soient utilisés non pas comme les sources de données, mais seulement comme interface entre l’utilisateur et ces sources de données.
L’idée est donc d’écrire des objets qui correspondent à nos données et ensuite de binder des collections de ces objets aux contrôles.
D’ailleurs c’est demandé suffisamment souvent pour que je me décide un jour à compléter le tuto
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023622 4 avril 2022 à 17:59
Bon le bug de mise à jour des sources que j'avais cru corrigé ne l'est en fait pas.
Donc à ajouter dans le source VB cité au début du tuto
un bouton nommé butExportCSV
un bouton nommé butImportCSV
ce code
Private Sub butExportCSV_Click(sender As Object, e As EventArgs) Handles butExportCSV.Click
Dim lignes = New List(Of String)() 'la liste des lignes qui seront exportées
lignes.Add("Nom;Prénom;DateNaissance") 'la ligne d'entête
For Each p As Personne In mesPersonnes
lignes.Add(String.Format("{0};{1};{2}", p.Nom, p.Prenom, p.Naissance)) 'une ligne par personne
Next
File.WriteAllLines("LesPersonnes.csv", lignes)
Process.Start("LesPersonnes.csv")
End Sub
Private Sub butImportCSV_Click(sender As Object, e As EventArgs) Handles butImportCSV.Click
Dim lignes As List(Of String) = File.ReadAllLines("LesPersonnes.csv").Skip(1).ToList() 'on importe chaque ligne, sauf la première
mesPersonnes.Clear() 'on vide la source de données actuelles
For Each l As String In lignes
'Pour chaque ligne du fichier on ajoute une personnes
Dim datas As String() = l.Split(";"c)
mesPersonnes.Add(New Personne With {
.Nom = datas(0),
.Prenom = datas(1),
.Naissance = datas(2).ToDate()
})
Next
'on force le binding à tout ré-afficher
personneBindingSource.ResetBindings(false)
End Sub