【问题标题】:VB.NET Object reference not set to an instance of an objectVB.NET 对象引用未设置为对象的实例
【发布时间】:2011-09-22 00:29:51
【问题描述】:

我在 VB.NET 中编写了一个 ASPX 文件。最初此文件成功运行,但在添加了一个附加参数后,它现在在下面的“peType.DataSource = arrPEType”行上的“对象引用未设置为对象的实例”上失败。

这个错误对我来说没有意义,因为我有类似的参数“dType”,它不会出错。这个错误的原因是什么?

这是我的一些 ASPX 代码文件:

Sub Page_Load(Sender as Object, E as EventArgs)
    If Not IsPostback Then 

      Dim TheMonthDate As Date = DateAdd(DateInterval.Month, -1, Today)
      calStartDate.SelectedDate = CDate((TheMonthDate.Month) & "/1/" & Year(TheMonthDate)).ToString("MM/dd/yyyy")
      calEndDate.SelectedDate = GlobalFunctions.GlobalF.MonthLastDate(CDate((TheMonthDate.Month) & "/1/" & Year(TheMonthDate)).ToString("MM/dd/yyyy"))

      Dim arrType as New ArrayList()
      Dim arrOrgUnit as New ArrayList()
      Dim arrPEType as New ArrayList()
      Dim peType As ListBox

      arrType.Add("Product and Process")
      arrType.Add("Product")       
       arrType.Add("Process")             
      dType.DataSource = arrType
      dType.DataBind()

      arrPEType.Add("-INC")
      arrPEType.Add("-NC")
      arrPEType.Add("-QC")
      peType.DataSource = arrPEType
      'peType.DataTextField = "DisplayColumnName"
      'peType.DataValueField = "ValueColumnName"
      peType.DataBind()
...
      Dim TheType as String
      Dim TheOrgUnit as String
      Dim PE_Type as String

      Select Case dType.SelectedValue
        Case "Product and Process": 
          TheType = "((SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_BASE_EXCEPTION)='PXP_PRODUCT_QXP' Or (SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_BASE_EXCEPTION)='PXP_PROCESS_QXP')"
        Case "Product": 
          TheType = "((SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_BASE_EXCEPTION)='PXP_PRODUCT_QXP')"
        Case "Process": 
          TheType = "((SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_BASE_EXCEPTION)='PXP_PROCESS_QXP')"
      End Select

      Select Case peType.SelectedValue
        Case "INC": 
          PE_Type = "substring(a.QXP_EXCEPTION_NO, charindex('-', a.QXP_EXCEPTION_NO)+1, 4)='INC'"
        Case "NC": 
          PE_Type = "substring(a.QXP_EXCEPTION_NO, charindex('-', a.QXP_EXCEPTION_NO)+1, 4)='NC'"
        Case "QC": 
          PE_Type = "substring(a.QXP_EXCEPTION_NO, charindex('-', a.QXP_EXCEPTION_NO)+1, 4)='QC'"
      End Select
...
          <td>
            Product Exception Type:
          </td>
          <td>
            <ASP:DROPDOWNLIST ID="peType" RUNAT="Server" AUTOPOSTBACK="true" />
          </td>

【问题讨论】:

    标签: vb.net datasource


    【解决方案1】:

    你不是在实例化你的 ListBox,你只是在声明它。

    Dim peType As ListBox()
    

    ...应该是...

    Dim peType As New ListBox()
    

    虽然错误可能看起来很模糊,但它会告诉您确切的问题。您的对象 peType 未设置为对象的实例。

    【讨论】:

      【解决方案2】:

      您尚未创建对象。

      你有:

      Dim peType As ListBox
      

      你应该有:

      Dim peType As new ListBox
      

      或从您的 UI 中找到现有的 ListBox

      【讨论】:

        猜你喜欢
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 2014-02-15
        • 1970-01-01
        • 1970-01-01
        • 2022-12-05
        • 2013-12-30
        • 1970-01-01
        相关资源
        最近更新 更多