【问题标题】:Why am i getting this error ? Conversion from string "Invoice" to type 'Integer' is not valid为什么我会收到此错误?从字符串“Invoice”到类型“Integer”的转换无效
【发布时间】:2020-07-04 16:03:09
【问题描述】:

我正在尝试使用数据表从数据库中获取数据,然后将其传递到我的文本框中。这是我的代码。错误发生在我的第一行 me.txtInvoice.text。

    Try
        dtTable = MyBase.appMgr.fncTransactionSuccessful_Sel("1", strErrMsg)
        If strErrMsg = String.Empty Then
            If dtTable.Rows.Count > 0 Then
                Me.txtInvoiceNo.Text = dtTable("Invoice").ToString
                Me.txtAmountPaid.Text = "RM " & dtTable("Amount").ToString
                Me.txtPaymentDate.Text = dtTable("PaymentDate").ToString
                Me.txtPackageSelected.Text = dtTable("PackageSelected").ToString
                Me.txtPackageStartDate.Text = dtTable("PackageStartDate").ToString
                Me.txtPackageEndDate.Text = dtTable("PackageEndDate").ToString
            End If
    <div class="form-group col-lg-6 col-md-12 col-sm-6" style="margin-bottom: 0px; margin-top: 17px">
      <asp:TextBox ID="txtInvoiceNo" runat="server" Text="123466" CssClass="form-control"></asp:TextBox>
      </div>

【问题讨论】:

  • 你是在尝试做dtTable.Rows(rowNum).Item("Invoice")吗?您不能直接从 DataTable 中选择字段(因为:哪一行?!)
  • 第一行是否有标题,如“发票”、“金额”等,而不是值?

标签: asp.net database vb.net datatable


【解决方案1】:

也许你打算这样做:

    dtTable = MyBase.appMgr.fncTransactionSuccessful_Sel("1", strErrMsg)
    If strErrMsg = String.Empty Then
        If dtTable.Rows.Count > 0 Then

            Dim ro = dtTable(0) 'get the first row out of the table

            Me.txtInvoiceNo.Text = ro("Invoice").ToString
            Me.txtAmountPaid.Text = "RM " & ro("Amount").ToString
            Me.txtPaymentDate.Text = ro("PaymentDate").ToString
            Me.txtPackageSelected.Text = ro("PackageSelected").ToString
            Me.txtPackageStartDate.Text = ro("PackageStartDate").ToString
            Me.txtPackageEndDate.Text = ro("PackageEndDate").ToString
        End If

如果您使用强类型数据集,它会让您的生活更轻松。对于强类型表,此代码可能如下所示:

    dtTable = MyBase.appMgr.fncTransactionSuccessful_Sel("1", strErrMsg)
    If strErrMsg <> String.Empty Then 
        'do something here
        Return
    End If

    If dtTable.Count > 0 Then
        Dim ro = dtTable(0) 'get the first row out of the table

        Me.txtInvoiceNo.Text = ro.Invoice
        Me.txtAmountPaid.Text = "RM " & ro.Amount
        Me.txtPaymentDate.Text = ro.PaymentDate
        Me.txtPackageSelected.Text = ro.PackageSelected
        Me.txtPackageStartDate.Text = ro.PackageStartDate
        Me.txtPackageEndDate.Text = ro.PackageEndDate
    End If

意思是 Intellisense 可以帮助您处理列,因为它们是具有正确数据类型的正确属性

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 2015-05-13
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多