Jag håller på att läsa boken Lär Dig ASP.NET På 3 Veckor
Och nu har kört fast i ett kodexempel.
Fel meddelandet ser ut så här:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 155: dgData.DataBind()
Line 156:
Line 157: objReader.Close
Line 158: objCmd.Connection.Close()
Line 159:
Jag tycker att det känns som om du ska deklarera ditt dgData någonstans. Är inte så hemma på VB.net men typ:
script runat="server">
'Skapa Databas koppling
Dim Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=min sökväg som jag inte visar här")
Protected dgData as DataGrid
Jag tror ändå att din datareader är null och därmed din datasource på diit datagrid.
Anledningen till att datareadern skull ekunna vara null kan vara att din connection inte är rätt. Kolla om din connection är null eller om din datareader är null. Där skulle jag börja :)
143: Try
144: objCmd.Connection.Open()
145: objReader = objCmd.ExecuteReader()
146: Catch Ex As Exception
147: lblMessage.Text = "Fel vid hämtning av databasen"
148: End Try
150: dgData.DataSource = objReader
151: If Not EditIndex.Equals(Nothing) Then
152: dgData.EditItemIndex = EditIndex
153: End If
154:
155: dgData.DataBind()
156:
157: objReader.Close
158: objCmd.Connection.Close()
Denna kodsnutt är/kommer att vara en felkälla.
Om du får ett fel i din databas så kommer ditt objReader att vara NULL då den inte kommer få någotvärde, du kommer även gå in i din Catch() kod och skriva ut ett meddelande till lbl. Tyvärr så kommer du fortsätta längre ner i koden med att sätta ditt dgDataGrids datasource till Null (det är inget fel, men är nog inte var du tänkt dig).
Du kommer sedan längre ner i koden att försöka dig på en .Close() method på ett objekt som INTE finns, och det kommer att ge dig ett NullReference fel.
Om du vill behålla din kod så måste du innan du gör din objReader.Close() kontrollera så att objReader != null.
Så mitt tips till dig blir att se över de raderna genom att sätta en breakpoint på dessa raderna och så stega dig igenom koden för att se vad som blir fel.
Eller så kan du välja WebMatrix från http://www.asp.net. Vet dock inte om man kan debuga I webmatrix...
Jag kan dock säga dig att utan möjligheten att debuga sig igen sin kod så kan man lika gärna lägga ner utvecklingen helt och hållet. Möjligheten att felsöka och debuga sin kod är mer än halva utvecklingsarbetet.