![]() |
|
|
|||||||
![]() |
ASP Net - Whats the error:- System.NullReferenceException: |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
What could cause the error:-
System.NullReferenceException: Object reference not set to an instance of an object. Any ideas? =?Utf-8?B?UGF0cmljay5PLklnZQ==?= |
|
|
|
|
#2 |
|
Posts: n/a
|
Your code is attempting reference an object that is currently equal to Null
(or, Nothing if you are using VB). -Chris ~ http://weblogs.austinspad.com/caustin "Patrick.O.Ige" <> wrote in message news:EE80975C-490B-427F-9472-... > What could cause the error:- > System.NullReferenceException: Object reference not set to an instance of > an > object. > Any ideas? > > |
|
|
|
#3 |
|
Posts: n/a
|
If you showed us some code, we'd probably be more likely to point out the
exact error..especially if you could provide a line # Karl -- MY ASP.Net tutorials http://www.openmymind.net/ "Patrick.O.Ige" <> wrote in message news:EE80975C-490B-427F-9472-... > What could cause the error:- > System.NullReferenceException: Object reference not set to an instance of an > object. > Any ideas? > > |
|
|
|
#4 |
|
Posts: n/a
|
Well what i have is a Datagrid that ,Updates,Adds and Delete.
When i add i have no error but when i click Update and Delete commands it fires an error.. The Error line is at :- "ItemNumber = CType(Args.Item.FindControl("ItemNumber"), TextBox).Text" Any ideas? My code is below(its my EditRecord Sub porgram):- Sub EditRecord(ByVal Src As Object, ByVal Args As DataGridCommandEventArgs) Dim Command As String Dim ItemNumber As String Dim ItemType As String Dim ItemSupplier As String Dim ItemName As String Dim ItemDescription As String Dim ItemPrice As String Dim ItemQuantity As String Dim DBConnection As SqlConnection Dim DBCommand As SqlCommand Dim DBReader As SqlDataReader Dim SQLString As String Command = Args.CommandSource.Text ItemNumber = CType(Args.Item.FindControl("ItemNumber"), TextBox).Text ItemType = CType(Args.Item.FindControl("ItemType"), DropDownList).SelectedItem.Text ItemSupplier = CType(Args.Item.FindControl("ItemSupplier"), TextBox).Text ItemName = CType(Args.Item.FindControl("ItemName"), TextBox).Text ItemDescription = CType(Args.Item.FindControl("ItemDescription"), TextBox).Text ItemPrice = CType(Args.Item.FindControl("ItemPrice"), TextBox).Text ItemQuantity = CType(Args.Item.FindControl("ItemQuantity"), TextBox).Text UpdateMessage.Text = " " Dim ValidRecord As Boolean = True If Command = "Add" Or Command = "Update" Then '-- CHECK FOR VALID RECORD --- '-- Check for valid ItemNumber If Len(ItemNumber) <> 6 Then UpdateMessage.Text &= "- Invalid Item Number length " ValidRecord = False ElseIf Not IsNumeric(Right(ItemNumber, 4)) Then UpdateMessage.Text &= "- Invalid Item Number format " ValidRecord = False Else ItemNumber = UCase(ItemNumber) End If '-- Check for missing Item Supplier If ItemSupplier = "" Then UpdateMessage.Text &= "- Missing Supplier " ValidRecord = False End If '-- Check for missing Item Name If ItemName = "" Then UpdateMessage.Text &= "- Missing Name " ValidRecord = False End If '-- Check for missing Item Description If ItemDescription = "" Then UpdateMessage.Text &= "- Missing Description " ValidRecord = False End If '-- Check for valid Item Price If Not IsNumeric(ItemPrice) Then UpdateMessage.Text &= "- Invalid Price format " ValidRecord = False End If '-- Check for valid Item Quantity If Not IsNumeric(ItemQuantity) Then UpdateMessage.Text &= "- Invalid Quantity format " ValidRecord = False End If If ValidRecord = True And Command = "Add" Then '--- CHECK FOR DUPLICATE RECORD --- DBConnection = New SqlConnection("server=(local);database=Northwind;i ntegrated security=true;") DBConnection.Open() SQLString = "SELECT Count(*) FROM products1 WHERE ItemNumber = '" & ItemNumber & "'" DBCommand = New SqlCommand(SQLString, DBConnection) If DBCommand.ExecuteScalar() <> 0 Then UpdateMessage.Text = "- Duplicate Item Number. Record not added." ValidRecord = False End If DBConnection.Close() End If End If If ValidRecord = True Then Select Case Command Case "Add" SQLString = "INSERT INTO products1 " & _ "(ItemNumber, ItemType, ItemSupplier, ItemName, " & _ "ItemDescription, ItemPrice, ItemQuantity) VALUES(" & _ "'" & ItemNumber & "', " & _ "'" & ItemType & "', " & _ "'" & Replace(ItemSupplier, "'", "''") & "', " & _ "'" & Replace(ItemName, "'", "''") & "', " & _ "'" & Replace(ItemDescription, "'", "''") & "', " & _ ItemPrice & ", " & _ ItemQuantity & ")" UpdateMessage.Text = "- Record " & ItemNumber & " added" Case "Update" SQLString = "UPDATE products1 SET " & _ "ItemType = '" & ItemType & "', " & _ "ItemSupplier = '" & Replace(ItemSupplier, "'", "''") & "', " & _ "ItemName = '" & Replace(ItemName, "'", "''") & "', " & _ "ItemDescription = '" & Replace(ItemDescription, "'", "''") & "', " & _ "ItemPrice = " & ItemPrice & ", " & _ "ItemQuantity = " & ItemQuantity & " " & _ "WHERE ItemNumber = '" & ItemNumber & "'" UpdateMessage.Text = "- Record " & ItemNumber & " updated" Case "Delete" SQLString = "DELETE FROM products1 WHERE ItemNumber = '" & ItemNumber & "'" UpdateMessage.Text = "- Record " & ItemNumber & " deleted" End Select DBConnection = New SqlConnection("server=(local);database=Northwind;i ntegrated security=true;") DBConnection.Open() DBCommand = New SqlCommand(SQLString, DBConnection) DBCommand.ExecuteNonQuery() DBConnection.Close() If Command = "Add" Or Command = "Delete" Then ViewState("Updated") = True Page_Load(Me, EventArgs.Empty) 'Page_Load(ByRef sender As System.Object, ByRef e As System.EventArgs) End If End If End Sub "Karl Seguin" wrote: > If you showed us some code, we'd probably be more likely to point out the > exact error..especially if you could provide a line # > > Karl > > -- > MY ASP.Net tutorials > http://www.openmymind.net/ > > > "Patrick.O.Ige" <> wrote in message > news:EE80975C-490B-427F-9472-... > > What could cause the error:- > > System.NullReferenceException: Object reference not set to an instance of > an > > object. > > Any ideas? > > > > > > > |
|
|
|
#5 |
|
Posts: n/a
|
Hello,
You het the error because Args.Item.FindControl("ItemNumber") does not find the control and returns Nothing and/or the found control is not TextBox. You cast the control to TextBox and if it is not a TextBox, it returns Nothing. I assume that VB .NET works similarry than "control as TextBox" which returns null, if the control is null or is not a TextBox. Then you try to use its property. It's basically the same if you do this: Control control = null; TextBox textBox = control as TextBox; string text = textBox.Text; // exception happens in here or this: Label label = new Label(); TextBox textBox = label as TextBox; string text = textBox.Text; // exception happens in here JMu "Patrick.O.Ige" <> wrote in message news:FABEBB82-2954-4FAF-B99F-... > Well what i have is a Datagrid that ,Updates,Adds and Delete. > When i add i have no error but when i click Update and Delete commands it > fires an error.. > The Error line is at :- > > "ItemNumber = CType(Args.Item.FindControl("ItemNumber"), TextBox).Text" > > Any ideas? |
|
|
|
#6 |
|
Posts: n/a
|
Thx Jarmo the reply.
But my html looks like the following below and ItemNumber is TEXTBOX! I don't know why its returning Null then! Its works with ASP.NET WebMatrix but gives the error with VStudio .Net!!! <asp OnItemCommand="EditRecord" AutoGenerateColumns="False" BackColor="#F9F9F9" HeaderStyle-BackColor="#990000" HeaderStyle-ForeColor="#FFFFFF" HeaderStyle-Font-Bold="True" HeaderStyle-HorizontalAlign="Center" HeaderStyle-VerticalAlign="Top" ItemStyle-VerticalAlign="Top" ItemStyle-HorizontalAlign="Center"> <Columns> <asp:TemplateColumn> <HeaderTemplate> No<br> <asp:TextBox id="ItemNumber" runat="server"/> </HeaderTemplate> <ItemTemplate> <asp:TextBox id="ItemNumber" runat="server" Text='<%# Container.DataItem("ItemNumber") %>' ReadOnly="True"/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> Type<br> <asp DataSource='<%# ItemTypes %>'/> </HeaderTemplate> <ItemTemplate> <asp DataSource='<%# ItemTypes %>' SelectedIndex='<%# SetIndex(Container.DataItem("ItemType")) %>'/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> Supplier<br> <asp:TextBox id="ItemSupplier" runat="server"/> </HeaderTemplate> <ItemTemplate> <asp:TextBox id="ItemSupplier" runat="server" Text='<%# Container.DataItem("ItemSupplier") %>'/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> Name<br> <asp:TextBox id="ItemName" runat="server"/> </HeaderTemplate> <ItemTemplate> <asp:TextBox id="ItemName" runat="server" Text='<%# Container.DataItem("ItemName") %>'/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> Description<br> <asp:TextBox id="ItemDescription" runat="server" TextMode="MultiLine" Cols="25" Rows="2"/> </HeaderTemplate> <ItemTemplate> <asp:TextBox id="ItemDescription" runat="server" Text='<%# Container.DataItem("ItemDescription") %>' TextMode="MultiLine" Cols="25" Rows="2"/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> Price<br> <asp:TextBox id="ItemPrice" runat="server" Text="0.00"/> </HeaderTemplate> <ItemTemplate> <asp:TextBox id="ItemPrice" runat="server" Text='<%# FormatNumber(Container.DataItem("ItemPrice"),2) %>'/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> Qty<br> <asp:TextBox id="ItemQuantity" runat="server" Text="0"/> </HeaderTemplate> <ItemTemplate> <asp:TextBox id="ItemQuantity" runat="server" Text='<%# Container.DataItem("ItemQuantity") %>'/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> <br> <asp:Button Text="Add" runat="server"/> </HeaderTemplate> <ItemTemplate> <asp:Button Text="Update" runat="server"/> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate> <br> </HeaderTemplate> <ItemTemplate> <asp:Button Text="Delete" runat="server"/> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp "Jarmo Muukka" wrote: > Hello, > > You het the error because Args.Item.FindControl("ItemNumber") does not find > the control and returns Nothing and/or the found control is not TextBox. You > cast the control to TextBox and if it is not a TextBox, it returns Nothing. > I assume that VB .NET works similarry than "control as TextBox" which > returns null, if the control is null or is not a TextBox. Then you try to > use its property. > > It's basically the same if you do this: > > Control control = null; > TextBox textBox = control as TextBox; > string text = textBox.Text; // exception happens in here > > or this: > > Label label = new Label(); > TextBox textBox = label as TextBox; > string text = textBox.Text; // exception happens in here > > JMu > > "Patrick.O.Ige" <> wrote in message > news:FABEBB82-2954-4FAF-B99F-... > > Well what i have is a Datagrid that ,Updates,Adds and Delete. > > When i add i have no error but when i click Update and Delete commands it > > fires an error.. > > The Error line is at :- > > > > "ItemNumber = CType(Args.Item.FindControl("ItemNumber"), TextBox).Text" > > > > Any ideas? > > > |
|