我正在尝试让我的datagridview显示多行数据。
每次调用程序时,它只会在datagridview中写入第一行数据,而不是将其添加到新行。
我一直在论坛上看了几个小时,但加上我的经验不足,我无法理解。
以下代码在循环中,每次都会读取一个xml文件。目标是将每个文件中的xml数据放入表中的新行。
Public Sub ReadData(ByVal filename As String, ByVal file As String)
Try
DS.ReadXml(filename)
DS.Tables.Add("MyTable")
With DS.Tables("MyTable")
.Columns.Add("Title 1")
.Columns.Add("Title 2")
.Columns.Add("Title 3")
.Columns.Add("Title 4")
.Columns.Add("Title 5")
.Columns.Add("Title 6")
End With
Using reader = New StreamReader(filename)
Dim line As String = reader.ReadToEnd()
rtb_Subsidary.AppendText(file & vbCrLf)
DS.Tables("MyTable").Rows.Add(file, "test 1", "test 2", "test 3", "test 4", "test 5", "test 6")
End Using
With dgv_Lic
.DataSource = DS.Tables("MyTable")
.ReadOnly = True
.ScrollBars = ScrollBars.Vertical
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
.AutoResizeColumns()
.RowHeadersVisible = False
For Each col As DataGridViewColumn In .Columns
col.SortMode = DataGridViewColumnSortMode.NotSortable
Next
End With
...end code
答案 0 :(得分:1)
看起来你的xml读数的逻辑流程并不完全正确。此外,读取xml看起来不正确。你正在做的其他事情看起来还不错,但是你的陈述(和xml阅读)的顺序意味着他们最终没有完成你想做的事情。
我阅读您当前代码的步骤是:
我的VB.Net非常生疏,所以不是给你一些不起作用的代码(或者一些c#),这里是一段伪代码,应该以正确的方式看你。
所以,非常糟糕的VB就像伪代码一样:
Public Class Form1
// A private class level variable of type datatable
Private dt As New DataTable
// You forms constructor
Public Sub New()
InitializeComponent()
// You may be able to get away with this initialization by using it automatically from the xml only once
With td
.Columns.Add("Title 1")
.Columns.Add("Title 2")
.Columns.Add("Title 3")
.Columns.Add("Title 4")
.Columns.Add("Title 5")
.Columns.Add("Title 6")
End With
// Also have you DataGridView code here in the initialization section
With dgv_Lic
.DataSource = DS.Tables("MyTable")
.ReadOnly = True
.ScrollBars = ScrollBars.Vertical
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
.AutoResizeColumns()
.RowHeadersVisible = False
For Each col As DataGridViewColumn In .Columns
col.SortMode = DataGridViewColumnSortMode.NotSortable
Next
End With
End Sub
// And this is your ReadData method called for each file
Public Sub ReadData(ByVal filename As String)
// Local datatable
Dim dt_temp As New DataTable
Using reader = New StreamReader(filename)
dt_temp.ReadXml(reader)
End Using
// Now merge dt with
dt.Merge(dt_temp)
End Sub
End Class
顺便说一下 - 对于这类问题,调试器(就像在Visual Studio中一样)可能很棒,它允许您逐行查看应用程序的执行情况,直接查看正在发生的事情。
答案 1 :(得分:0)
我得到了它 - 我正在尝试一种过于复杂的方式。
我真的无法发布答案,因为代码改变了我上面发布的内容 - 但是感谢您抽出时间回复 - 这有助于大量的时间。