2016-02-26 4 views
2

У меня есть документ первенствовать и я пытаюсь заполнить форму со значением из базы данных и я ahve некоторые DropDownList создавать как этотСсылка на объект не указывает на экземпляр объекта для DataReader

<ContentTemplate> 
       &nbsp; <asp:DropDownList ID="DDL_Transporter" runat="server" Width = "157px" 
         DataSourceID="SqlDataSource2" DataTextField="transporter" 
         DataValueField="transporter"> 
         <asp:ListItem></asp:ListItem> 
       </asp:DropDownList> 
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
         ConnectionString="Data Source=xxx;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx" 
         SelectCommand="SELECT [transporter] FROM [Transporter] where [active]= 'active'"></asp:SqlDataSource> 
       </ContentTemplate> 

я не знаю где проблема, но когда я пытаюсь заполнить все поля отображать эту ошибку:

Server Error in '/' Application.

Object reference not set to an instance of an object.

Line 46: End Try Line 47: Line 48:
If Header_DataReader.HasRows Then Line 49: Do While Header_DataReader.Read Line 50:

Мой код здесь:

Если Page.IsPostBack = False Тогда

  Dim con As New SqlConnection 
      Dim cmd As New SqlCommand 

      con = FunctionConnection() 
      cmd.Connection = con 

      cmd.CommandText = "GetFillData" 
      cmd.CommandType = CommandType.StoredProcedure 
      cmd.Parameters.AddWithValue("@OrderID", RowID) 
      Dim Header_DataReader As SqlDataReader = Nothing 
      Try 
       con.Open() 
       Header_DataReader = cmd.ExecuteReader 
      Catch ex As Exception 

      End Try 

      If Header_DataReader.HasRows Then 
       Do While Header_DataReader.Read 

        BOX_SampleOrder.Enabled = False 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("DVMOrderNumber")) = False Then 
         BOX_SampleOrder.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("DVMOrderNumber")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("Requester")) = False Then 
         BOX_Requester.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("Requester")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ProjectNumber")) = False Then 
         BOX_ProjectNumber.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ProjectNumber")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("CostResponsable")) = False Then 
         BOX_PersonInvoiced.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("CostResponsable")) 
        End If 
        BOX_PersonInvoiced.Text = Generals.TrimMyString(BOX_PersonInvoiced.Text) 

        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("SampleOrderType")) = False Then 
         DDL_SampleCategory.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("SampleOrderType")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("TotalSamples")) = False Then 
         BOX_Quantity.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("TotalSamples")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("CostCenter")) = False Then 
         BOX_CostCenter.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("CostCenter")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("OrderDescription")) = False Then 
         BOX_Description.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("OrderDescription")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("FinalCustomerAddress")) = False Then 
         BOX_RecipientName.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("FinalCustomerAddress")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("TargetDate")) = False Then 
         BOX_DesiredDeliveryDate.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("TargetDate")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("AssemblyPlannedDate")) = False Then 
         BOX_AssemblyPlanedDate.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("AssemblyPlannedDate")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("LogisticsResponsable")) = False Then 
         DDL_Coordonator.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("LogisticsResponsable")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ShippingMode")) = False Then 
         DDL_ShippingMode.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ShippingMode")) 
        End If 
        DDL_Transporter.Items.Clear() 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ExpressShipment")) = False Then 
         DDL_Transporter.Items.Add(Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ExpressShipment"))) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ShippingAddress")) = False Then 
         BOX_ShippingAddress.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ShippingAddress")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("Urgent")) = False Then 
         RBL_Urgent.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("Urgent")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("HazardousMaterial")) = False Then 
         RBL_Hazardous.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("HazardousMaterial")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("HasBOM")) = False Then 
         RBL_BOM.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("HasBOM")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("HasSerialComponents")) = False Then 
         RBL_SerialComponents.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("HasSerialComponents")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("PrototypeComponents")) = False Then 
         RBL_PrototypeComponents.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("PrototypeComponents")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ReadyForAssembly")) = False Then 
         RBL_ReadyAssembly.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ReadyForAssembly")) 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("Status")) = False Then 
         DDL_OrderStatus.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("Status")) 
        Else 
         DDL_OrderStatus.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("OrderType")) = False Then 
         DDL_OrderCategory.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("OrderType")) 
        Else 
         DDL_OrderCategory.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ExtraQty")) = False Then 
         BOX_ExtraQuantity.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ExtraQty")) 
        Else 
         BOX_ExtraQuantity.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("PackagingType")) = False Then 
         DDL_PackagingType.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("PackagingType")) 
        Else 
         DDL_PackagingType.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("SampleLabeling")) = False Then 
         BOX_SampleLabeling.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("SampleLabeling")) 
        Else 
         BOX_SampleLabeling.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("AssemblySite")) = False Then 
         DDL_AssemblySite.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("AssemblySite")) 
        Else 
         DDL_AssemblySite.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("AssemblyDate")) = False Then 
         BOX_AssemblyDate.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("AssemblyDate")) 
        Else 
         BOX_AssemblyDate.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("Destination")) = False Then 
         BOX_Destination.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("Destination")) 
        Else 
         BOX_Destination.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ShippmentPlannedDate")) = False Then 
         BOX_ShippmentPlannedDate.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ShippmentPlannedDate")) 
        Else 
         BOX_ShippmentPlannedDate.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ShippmentDate")) = False Then 
         BOX_ShippmentDate.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ShippmentDate")) 
        Else 
         BOX_ShippmentDate.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ShippingCost")) = False Then 
         BOX_ShippingCost.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ShippingCost")) 
        Else 
         BOX_ShippingCost.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("MaterialCost")) = False Then 
         BOX_TestingCost.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("MaterialCost")) 
        Else 
         BOX_TestingCost.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("ExtraNotice")) = False Then 
         BOX_ExtraNotice.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("ExtraNotice")) 
        Else 
         BOX_ExtraNotice.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("DelayMotive")) = False Then 
         BOX_DelayMotive.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("DelayMotive")) 
        Else 
         BOX_DelayMotive.Text = Nothing 
        End If 
        If Header_DataReader.IsDBNull(Header_DataReader.GetOrdinal("Comments")) = False Then 
         BOX_Comments.Text = Header_DataReader.GetValue(Header_DataReader.GetOrdinal("Comments")) 
        Else 
         BOX_Comments.Text = Nothing 
        End If 
       Loop 
      End If 



      If con.State = ConnectionState.Open Then 
       con.Close() 
      End If 
end if 
+3

Возможный дубликат [Что такое исключение NullReferenceException и как исправить i t?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

+1

В какой-то момент все это ударяют. Правильное решение состоит в том, чтобы узнать, как использовать отладчик и отследить, что вызывает его - связанный вопрос и ответы (примечание [ответ, посвященный VB] (http://stackoverflow.com/a/26761773/791010)) показывают, как для этого подробно. –

+2

Также обратите внимание, что у вас есть пустой блок 'Catch'. Возможно, вы захотите полностью удалить этот try/catch или по крайней мере поместить некоторые записи в блок catch - глядя на то, что у вас есть, и где ошибка, похоже, что вы либо получили сообщение об ошибке, либо ошибка выполнения запроса. Пустой блок блокировки скрывает его. –

ответ

0

Очевидно, что существует проблема с этим кодом:

con.Open() 
Header_DataReader = cmd.ExecuteReader 

Это Header_DataReader до сих пор значение Nothing Вы можете поймать исключение, чтобы посмотреть, что случилось с выполнением команды

Or вы можете сделать это:

+0

Хорошо спасибо, я поставил изменить свой код так, без проблем в этот момент. если ошибка исчезнет, ​​я скажу вам. – Vladut