单击表单按钮后,数据集为NULL

时间:2018-01-14 04:29:02

标签: asp.net vb.net dataset

单击表单按钮后,

数据集为NULL。

我想学习和理解Visual Basic 2017。 在测试webform上,一些文本框中填充了数据集(DS)项(在页面加载期间)。 这没有问题。

表单上还有一个SAVE按钮,在单击后必须用文本框填充数据集项。 但是数据集似乎是NULL。 怎么可能? 我希望有人可以告诉我出了什么问题,我知道数据集在运行时会保持dukkws。

点击SAVE按钮后出现此错误:======================================= === System.NullReferenceException:未将对象引用设置为对象的实例。   在S:\ P2 S中的NW_DB_update_test.NWtest.testDS()测试\ NW DB

更新测试\ NW数据库更新测试\ NWtest.aspx.vb:第46行

你的VB soutce是==================================

选项明确开启 Option Strict On

导入System.Data.SqlClient

Public Class NWtest     继承System.Web.UI.Page

Public DA As SqlDataAdapter
Public DS As System.Data.DataSet
Public CB As SqlCommandBuilder

Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        Call GETNWDS()
        Call testDS()
    End If
End Sub

Public Sub GETNWDS()
    '' opencustumorDataAdapterdaaset DS

    Dim connectionString = ConfigurationManager.ConnectionStrings("NW testConnectionString").ConnectionString
    Dim queryString As String = "SELECT CustomerID, CompanyName, ContactName FROM Customers where CustomerID='ALFKI'"

    Dim conn As New SqlConnection(connectionString)
    DA = New SqlDataAdapter(queryString, conn)
    DS = New System.Data.DataSet
    DA.Fill(DS)

    CustomerIDbox.Text = DS.Tables(0).Rows(0).Item("CustomerID").ToString
    CompanyNamebox.Text = DS.Tables(0).Rows(0).Item("CompanyName").ToString
    ContactNamebox.Text = DS.Tables(0).Rows(0).Item("ContactName").ToString

End Sub

Public Sub testDS()
    Try
        Dim v As String
        v = "in DS= " + DS.Tables(0).Rows(0).Item("ContactName").ToString
        Textbox.Text = v

        'Error after clicking the save button:
        '   System.NullReferenceException
        '   Object reference Not set to an instance of an object.  
        '   at NW_DB_update_test.NWtest.testDS() in S: \P2 S VS tests\NW DB update test\NW DB update test\NWtest.aspx.vb:line 46


    Catch x As Exception
        Textbox.Text = x.ToString
    End Try

End Sub

结束班

=============================================== =========================================

1 个答案:

答案 0 :(得分:0)

我不确定你想要实现什么,但正如ADyson所解释的那样,你在页面加载时声明的变量在回发后是不存在的。另一方面,如果你只想阅读ContactName,你可以直接从它写入的文本框中获取它,因为如果没有另外说明,控件会在回发之间保持不变。

Textbox.Text=ContactNamebox.Text