Отображение данных из файла .txt в отдельных строках в DataGridView

Я новичок в VB.net, и мне дали домашнее задание. Мне нужно иметь возможность читать определенные строки и отображать их в DataGridView. Я смог связать свой файл .txt с DGV, однако он читает весь файл, а не конкретную строку. У меня 4 кнопки: бтн1, бтн2, бтн3, бтн4.

Я добавил в форму новую кнопку, которая загружает данные из текстового файла, анализирует их в таблицу данных и устанавливает DataGridView1.DataSource в эту таблицу данных. Затем второй метод создает новую таблицу данных и импортирует указанную строку из основной таблицы данных и показывает ее в DGV.

Мне нужно иметь возможность нажимать btn1 и отображать данные в DGV, и если после этого нажимается btn2, данные будут отображаться в строке под ним и т. д.

Любая помощь будет принята с благодарностью.

Private txtDataTable As DataTable
Private Sub loadFileBtn_Click(sender As Object, e As EventArgs) Handles        
loadFileBtn.Click
txtDataTable = New DataTable("txtContents")

Dim txtContents As String()
Try
    txtContents = IO.File.ReadAllLines("database.txt")
Catch ex As Exception
    MsgBox(ex.Message)
    Return
End Try

Dim txtLines As New List(Of String())
txtContents.ToList().ForEach(Sub(x) txtLines.Add(x.Split(CChar(vbTab))))

If txtLines.Count > 0 Then
    txtLines.Item(0).ToList.ForEach(Sub(x) txtDataTable.Columns.Add(New DataColumn(x.ToString)))
    txtLines.RemoveAt(0)
End If

If txtLines.Count > 0 Then
    txtLines.ToList.ForEach(Sub(x) txtDataTable.Rows.Add(x.ToArray))
End If
DataGridView1.DataSource = txtDataTable
End Sub


Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn1.Click,         
btn2.Click, btn3.Click, btn4.Click
If txtDataTable Is Nothing Then Return

Dim rowIndex As Integer
If Integer.TryParse(DirectCast(sender, Button).Name.Replace("btn", String.Empty), rowIndex) Then
    rowIndex -= 1
Else
    Return
End If

Dim TempTable As DataTable = txtDataTable.Clone
If rowIndex < txtDataTable.Rows.Count Then
    TempTable.ImportRow(txtDataTable.Rows(rowIndex))
End If

DataGridView1.DataSource = TempTable

Конец сабвуфера

Вывод


person MLL    schedule 09.03.2015    source источник


Ответы (1)


Из вашего кода я предполагаю, что это текстовый файл с разделителями TAB. Что, если вы прочитаете файл так:

    Using fileReader As New FileIO.TextFieldParser(PathToFileAsString)
        fileReader.TextFieldType = FileIO.FieldType.Delimited
        fileReader.SetDelimiters(vbTab)
        While Not fileReader.EndOfData
            Dim currentRow as String() = fileReader.ReadFields
            For Each currentField As String In currentRow
                'Have your way with it.
            Next
        End While
    End Using
person S. Adam Nissley    schedule 09.03.2015