Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database VB.NET listview未显示数据集中的所有数据_Database_Vb.net_Listview_Datatable_Dataset - Fatal编程技术网

Database VB.NET listview未显示数据集中的所有数据

Database VB.NET listview未显示数据集中的所有数据,database,vb.net,listview,datatable,dataset,Database,Vb.net,Listview,Datatable,Dataset,这个问题快把我逼疯了,我搞不懂为什么会发生这种事。我正在使用vb.net在access数据库中运行一个查询,然后将数据放入listview。代码: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strAccessConn As String = "Provider = Microsoft.ACE.OLEDB.12

这个问题快把我逼疯了,我搞不懂为什么会发生这种事。我正在使用vb.net在access数据库中运行一个查询,然后将数据放入listview。代码:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim strAccessConn As String = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = T:\mydb.accdb"
    Dim cn As OleDbConnection = New OleDbConnection(strAccessConn)
    Dim ds As New DataSet
    Dim dt As DataTable

    'Note the query is entered as a string.
    Dim da As New OleDbDataAdapter("Q_LIST", cn) 'is the name of the query in Access 

    'Set the CommandType of the SelectCommand to TableDirect
    da.SelectCommand.CommandType = CommandType.TableDirect
    da.Fill(ds, "mytable")
    dt = ds.Tables("mytable")

    ListViewBatchResults.MultiSelect = True
    ListViewBatchResults.View = View.Details
    ListViewBatchResults.GridLines = True
    ListViewBatchResults.Columns.Clear()
    ListViewBatchResults.Items.Clear()

    For Each col As DataColumn In dt.Columns()
        ListViewBatchResults.Columns.Add(col.ToString)
    Next

    MsgBox(dt.Rows.Count)

    For Each row As DataRow In dt.Rows()

        Dim lst As ListViewItem

        lst = ListViewBatchResults.Items.Add(row(0))

        For i As Integer = 1 To dt.Columns.Count - 1
            lst.SubItems.Add(row(i))
        Next

    Next


End Sub
这个listview并没有显示所有返回的数据,我也不知道为什么——它可以在DB中的其他查询上工作,但由于某种原因,它不能在这个查询上工作。行数显示有264行,但是当我运行项目时,listview仅显示其中的3行。到底发生了什么事

干杯

Dim lst As ListViewItem


您提供的信息无法帮助您:如果dt填充正确,您不应该发现任何问题,因此问题在于dt。提供您正在使用的查询或dt中的信息(Rows.Count可能很高,但大多数行可能是空的);这将返回95行,其中非空行-但listview仅显示其中的10行。我开始认为这是VB的一个bug?在开始考虑这样一个问题之前,先尝试一下“您的程序/DB中很可能有bug”选项:。在得出如此激进的结论之前,让我们先做一步一步的分析,你不这样认为吗?Rows被视为一个(可枚举的)集合,我从来没有(但从来没有,从来没有…)听说过for-each循环中迭代集合的bug。首先要确保迭代是正确的。在lst.SubItems.Add(第(i)行)中设置一个断点,看看这些值是否正确还有很多我在代码中不理解的地方:您正在填充lst,但将列包括到ListViewBatchResults中?另外,您到底打算对lst=ListViewBatchResults.Items.Add(第(0)行)执行什么操作?。。。在逐值查看之前,您是否介意解释要填充的列表?好的,注释如下:'For i As Integer=1 to dt.Columns.Count-1'lst.SubItems.Add(row(i))'MsgBox(i)'Next允许使用数据库中的数据填充第一列。。。所以是的,这是糟糕的编码:)
Dim lst As New ListViewItem