2015-03-09 4 views
0

Я полностью новичок в VB.net и получил задание на домашнюю работу. Мне нужно уметь читать определенные строки и отображать их в DataGridView. Мне удалось связать мой .txt-файл с DGV, однако он читает весь файл в отличие от конкретной строки. У меня есть 4 кнопки: btn1, btn2, btn3, btn4.Отображение данных из TXT-файла в отдельных строках в DataGridView

Я добавил новую кнопку в форму, которая загружает данные из текстового файла, анализирует его на datatable и устанавливает DataGridView1.DataSource в этот DataTable. Второй метод создает новый datatable и импортирует указанную строку из основного файла данных и показывает его в 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 

End Sub

Output

ответ

0

Я предполагаю, что из вашего кода, что это 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