【问题标题】:vb.net blank data in datatable causing loop to exit, not populating listviewvb.net 数据表中的空白数据导致循环退出,不填充列表视图
【发布时间】:2013-08-09 11:40:30
【问题描述】:

我正在使用以下代码从使用访问数据库中的查询检索到的数据集中填充列表视图中的列:

    For Each field As DataRow In dt.Rows()
        If field Is Nothing Then
            MsgBox("there's nothing here")
        End If

        ListViewBatchResults.Items.Add(field(3))

    Next

问题是,一旦遇到空白字段,循环就会退出并且列表视图尚未完成填充,因此遇到的第一个空白字段之后的任何数据都不会显示。

我该如何解决这个问题?

【问题讨论】:

  • 会抛出异常吗?
  • 不 - 没有!它只是运行项目,显示表单并根据数据库中的数据显示数据,直到遇到第一个空白字段。
  • 您正在检查 dataRow 是否为 Nothing(在这种情况下,存在某些内容),但不检查字段列是否为 Nothing。

标签: vb.net loops datatable dataset


【解决方案1】:

在添加之前尝试检查值是否为null,例如:

 If (Not IsDBNull(field(3))) Then
     Dim lvwItem As ListViewItem = ListView1.Items.Add(field(3).ToString())
     lvwItem.SubItems.Add(field(4).ToString())
 End If

您也可以尝试检查它是null 还是empty,例如:

 If (Not IsDBNull(field(3))) Then
    If (Not String.IsNullOrEmpty(field(3))) Then
       Dim lvwItem As ListViewItem = ListView1.Items.Add(field(3).ToString())
       lvwItem.SubItems.Add(field(4).ToString())
    End If
 End If

【讨论】:

  • 该代码似乎只是将数据复制到列表视图的第一列中:data1 data1 data2 data2 data3 data3 etc...然后你会遇到同样的问题 - 它停在不包含的字段数据:(
  • 您的listview 有多少列?因为如果它不止一个,你可以使用Subitems.Add 除了Items.Add
  • 8 列,我正在尝试让列表视图根据数据库查询中的列填充每一列,但这是另一回事...
  • 当我做 SubItems.Add 我只是得到这个错误:'SubItems' is not a member of 'System.Windows.Forms.ListView'
  • 感谢 Edper,但仍然无法正常工作 - 只是不想在遇到空白字段时填充列表视图 :(
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多