【问题标题】:Importing a DataRow to a new DataTable results in error. VB.NET将 DataRow 导入新的 DataTable 会导致错误。 VB.NET
【发布时间】:2016-01-23 18:26:28
【问题描述】:

我被安排在一个较旧的项目 vb.net 项目上。我正在尝试查询数据表并将生成的 DataRow 导入新创建的 DataTable。

代码:

    Private Sub FilterSelectedByString(ByVal str As String, ByVal mID As Integer)
        Try
            dsTargetEmployees = MemberShipManager.GetMessageTargets(_page.Client, mID)
            dtTargets = dsTargets.Tables("MessageTargets")
            Dim dt As DataTable = Nothing
            For Each dr As DataRow In dtTargets.Select(str)
                dt.ImportRow(dr)
            Next
            lstSelected.Items.Clear()
            lstSelected.DataSource = dt
            lstSelected.DataTextField = "EmployeeName"
            lstSelected.DataValueField = "EmployeeID"
            lstSelected.DataBind()
        Catch ex As Exception
           //error code
        End Try
    End Sub

这会导致 for 循环中出现“对象未设置为对象的实例”错误。我试过手动在表中创建数据列,但这也会导致同样的错误。

【问题讨论】:

    标签: vb.net datatable datarow


    【解决方案1】:

    解决了我自己的问题。将原始表复制到创建的表中,然后清除它构建正确的结构。

    Private Sub FilterSelectedByString(ByVal str As String, ByVal mID As Integer)
        Try
            dsTargetEmployees = MemberShipManager.GetMessageTargets(_page.Client, mID)
            dtTargets = dsTargets.Tables("MessageTargets")
            Dim dt As DataTable = dtTargets.Copy()
            dt.Clear()
            For Each dr As DataRow In dtTargets.Select(str)
                dt.ImportRow(dr)
            Next
            lstSelected.Items.Clear()
            lstSelected.DataSource = dt
            lstSelected.DataTextField = "EmployeeName"
            lstSelected.DataValueField = "EmployeeID"
            lstSelected.DataBind()
        Catch ex As Exception
           //error code
        End Try
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 2022-11-16
      • 2016-11-05
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 2021-10-18
      相关资源
      最近更新 更多