Whats the error:- System.NullReferenceException:

G

Guest

What could cause the error:-
System.NullReferenceException: Object reference not set to an instance of an
object.
Any ideas?
 
K

Karl Seguin

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
 
G

Guest

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;integrated 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;integrated 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
 
J

Jarmo Muukka

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
 
G

Guest

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:DataGrid id="DataGridDisplay" Width="560px" runat="server"
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:DropDownList id="ItemType" runat="server"
DataSource='<%# ItemTypes %>'/>
</HeaderTemplate>
<ItemTemplate>
<asp:DropDownList id="ItemType" runat="server"
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:DataGrid>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,817
Latest member
DicWeils

Latest Threads

Top