我很困惑,我似乎无法弄清楚为什么此循环仅在datagridview中产生以下内容:
我使用的代码是:
Private Sub ReadTextFiles()
Dim textline As String
Dim dt As New DataTable
dt.Columns.Add("Date & Time")
dt.Columns.Add("Name")
dt.Columns.Add("tpnb")
dt.Columns.Add("Description")
dt.Columns.Add("id")
dt.Columns.Add("Department")
dt.Columns.Add("Price")
Dim fileentries As String() = Directory.GetFiles("D:\Comp Sci\ASC_BCKUP_260119\ASC_w-Login\bin\Debug\Orders")
For Each entry In fileentries
Dim linecount As Integer = File.ReadAllLines(entry).Length
Dim rowcount As Integer = linecount / 7
Using reader As New StreamReader(entry)
For rowcount = 0 To rowcount - 1
dt.Rows.Add()
For col = 0 To 6
textline = reader.ReadLine()
TextBox1.Text += textline
dt.Rows(rowcount)(col) = textline
Next
Next
End Using
Next
DataGridView1.DataSource = dt
'DataGridView1.Columns("Price").DefaultCellStyle.Format = "£00:00"
End Sub
我添加了textbox1
来查看其中包含的内容并包含所有数据,但是datagridview没有,我也看不到为什么。 datagridview仅将3个产品的信息附加到其上,为什么我不确定为什么这样做。
该目录包含3个文本文件,总共35行,因此在datagridview中应该可以看到总共5种产品。
要清除问题: 这里的循环应该遍历datagridview并将相关信息写入每个单元格。对于每种产品,都有7位信息,如datagridview的图像所示。
我尝试使用dim dr = dt.NewRow()
和dt.rows.add(dr)
,但是datagridview现在为空,仅包含列标题。
这是一个文本文件的图像。
非常感谢您提供帮助,以使我摆脱沮丧。
答案 0 :(得分:1)
只要每个产品的行数保持为7,这对于任何文件中具有任意数量产品的文件都应适用。
Private Sub ReadTextFiles()
Dim dt As New DataTable
dt.Columns.Add("Date & Time")
dt.Columns.Add("Name")
dt.Columns.Add("tpnb")
dt.Columns.Add("Description")
dt.Columns.Add("id")
dt.Columns.Add("Department")
dt.Columns.Add("Price")
'3 files
'7 fields
'35 lines total
'5 products
Dim fileentries As String() = Directory.GetFiles("TestFiles")
Dim lstLines As New List(Of String)
For Each entry In fileentries
lstLines.AddRange(File.ReadAllLines(entry))
Next
'Now we have all the data lines in a list
Dim i As Integer
Dim OuterLoopIterations As Integer = CInt(lstLines.Count / 7)
For iterations = 0 To OuterLoopIterations - 1
Dim row = dt.NewRow
For col = 0 To 6
row(col) = lstLines(i)
i += 1
Next
dt.Rows.Add(row)
Next
DataGridView1.DataSource = dt
End Sub
答案 1 :(得分:0)
仅查看代码即可-dt.Rows.Add()是将行添加到数据表的方法。它只是将可在你把它叫做点的3行。 在其上方放置一个断点,查看将其添加到数据表时可用的内容。您可能需要移动该语句。 另外,您可以检查其添加的文件-显示的3个项目是来自不同文件还是相同文件?这会告诉你在什么时候你将是错误的。