I am getting an error while I am working through a asp.net 2.0 website tutorial
it is for the 11th chapter of the book where i am trying to update an employees address.

here is my code
<%@ Page Language="VB" MasterPageFile="~/themasterpage.master" AutoEventWireup="false" CodeFile="AddressBook.aspx.vb" Inherits="AddressBook" title="Dorknozzle Address Book" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<h1>Address Book</h1>
<asp:GridView id="grid" runat="server"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="MobilePhone"
HeaderText="Mobile Phone" />
<asp:ButtonField CommandName="Select" Text="Select" />
</Columns>
</asp:GridView>
<br />
<aspetailsView id="employeeDetails" runat="server"
AutoGenerateRows="False">
<Fields>
<asp:TemplateField HeaderText="Address">
<EditItemTemplate>
<asp:TextBox ID="editAddressTextBox" runat="server" Text='<%# Bind("Address") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="insertAddressTextBox" runat="server" Text='<%# Bind("Address") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="addressLabel" runat="server" Text='<%# Bind("Address") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="City">
<EditItemTemplate>
<asp:TextBox ID="editCityTextBox" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="insertCityTextBox" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="cityLabel" runat="server" Text='<%# Bind("City") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="State">
<EditItemTemplate>
<asp:TextBox ID="editStateTextBox" runat="server" Text='<%# Bind("State") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="insertStateTextBox" runat="server" Text='<%# Bind("State") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="stateLabel" runat="server" Text='<%# Bind("State") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Zip">
<EditItemTemplate>
<asp:TextBox ID="editZipTextBox" runat="server" Text='<%# Bind("Zip") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="insertZipTextBox" runat="server" Text='<%# Bind("Zip") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="zipLabel" runat="server" Text='<%# Bind("Zip") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Home Phone">
<EditItemTemplate>
<asp:TextBox ID="editHomePhoneTextBox" runat="server" Text='<%# Bind("HomePhone") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="insertHomePhoneTextBox" runat="server" Text='<%# Bind("HomePhone") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="homePhoneLabel" runat="server" Text='<%# Bind("HomePhone") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Extension">
<EditItemTemplate>
<asp:TextBox ID="editExtensionTextBox" runat="server" Text='<%# Bind("Extension") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="insertExtensionTextBox" runat="server" Text='<%# Bind("Extension") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="extensionLabel" runat="server" Text='<%# Bind("Extension") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Fields>
<HeaderTemplate>
<%#Eval("Name")%>
</HeaderTemplate>
</aspetailsView>
</asp:Content>

vb.net code
Imports System.Data.SqlClient



Partial Class AddressBook
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
BindGrid()
End If
End Sub
Protected Sub employeeDetails_ItemUpdated( _
ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DetailsViewUpdatedEventArgs) _
Handles employeeDetails.ItemUpdated
Dim employeeid As Integer = employeeDetails.DataKey.Value
Dim newAddresstextbox As TextBox = employeeDetails.FindControl("editaddresstextbox")
Dim newcitytextbox As TextBox = employeeDetails.FindControl("editcitytextbox")
Dim newstatetextbox As TextBox = employeeDetails.FindControl("editstatetextbox")
Dim newziptextbox As TextBox = employeeDetails.FindControl("editziptextbox")
Dim newhomephonetextbox As TextBox = employeeDetails.FindControl(" editHomePhoneTextBox")
Dim newhextensiontextbox As TextBox = employeeDetails.FindControl(" editextensionTextBox")
Dim newaddress As String = newAddresstextbox.Text
Dim newcity As String = newcitytextbox.Text
Dim newstate As String = newstatetextbox.Text
Dim newzip As String = newziptextbox.Text
Dim newhomephone As String = newhomephonetextbox.Text
Dim newextension As String = newhextensiontextbox.Text
Dim comm As SqlCommand
Dim Conn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data\dorknozzle.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
comm = New SqlCommand("updateemployeedetails", Conn)
comm.CommandType = Data.CommandType.StoredProcedure
comm.Parameters.Add("@employeeid", Data.SqlDbType.Int)
comm.Parameters("@employeeid").Value = employeeid
comm.Parameters.Add("@newaddress", Data.SqlDbType.NVarChar, 50)
comm.Parameters("@newaddress").Value = newaddress
comm.Parameters.Add("@newcity", Data.SqlDbType.NVarChar, 50)
comm.Parameters("@newcity").Value = newcity
Try
Conn.Open()
comm.ExecuteNonQuery()
Finally
Conn.Close()



End Try
employeeDetails.ChangeMode(DetailsViewMode.ReadOnly)
BindGrid()
BindDetails()













End Sub
Private Sub BindGrid()
' Define data objects
'Dim conn As SqlConnection
Dim comm As SqlCommand
Dim reader As SqlDataReader
' Read the connection string from Web.config
Dim Conn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data\dorknozzle.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")

' Initialize connection
'conn = New SqlConnection(connectionString)
' Create command
comm = New SqlCommand( _
"SELECT EmployeeID, Name, City, State, MobilePhone " & _
"FROM Employees", conn)
' Enclose database code in Try-Catch-Finally
Try
' Open the connection
conn.Open()
' Execute the command
reader = comm.ExecuteReader()
' Fill the grid with data
grid.DataSource = reader
grid.DataKeyNames = New String() {"EmployeeID"}
grid.DataBind()
' Close the reader
reader.Close()
Finally
' Close the connection
conn.Close()
End Try
End Sub

Protected Sub grid_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles grid.SelectedIndexChanged
BindDetails()
End Sub
Private Sub BindDetails()
' Obtain the index of the selected row
Dim selectedRowIndex As Integer = grid.SelectedIndex
' Read the employee ID
Dim employeeId As Integer = _
grid.DataKeys(selectedRowIndex).Value
' Define data objects
'Dim conn As SqlConnection
Dim comm As SqlCommand
Dim reader As SqlDataReader
' Read the connection string from Web.config
Dim Conn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data\dorknozzle.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")

' Initialize connection
'conn = New SqlConnection(connectionString)
' Create command
comm = New SqlCommand( _
"SELECT EmployeeID, Name, Address, City, State, Zip, " & _
"HomePhone, Extension FROM Employees " & _
"WHERE EmployeeID=@EmployeeID", conn)
' Add the EmployeeID parameter
comm.Parameters.Add("EmployeeID", Data.SqlDbType.Int)
comm.Parameters("EmployeeID").Value = employeeId
' Enclose database code in Try-Catch-Finally
Try
' Open the connection
conn.Open()
' Execute the command
reader = comm.ExecuteReader()
' Fill the grid with data
employeeDetails.DataSource = reader
employeeDetails.DataKeyNames = New String() {"EmployeeID"}
employeeDetails.DataBind()
' Close the reader
reader.Close()
Finally
' Close the connection
conn.Close()
End Try
End Sub

Protected Sub employeeDetails_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewModeEventArgs) Handles employeeDetails.ModeChanging
' Change current mode to the selected one
employeeDetails.ChangeMode(e.NewMode)
' Rebind the grid
BindDetails()
End Sub


End Class



error



The DetailsView 'employeeDetails' fired event ItemUpdating which wasn't handled.
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.Web.HttpException: The DetailsView 'employeeDetails' fired event ItemUpdating which wasn't handled.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[HttpException (0x80004005): The DetailsView 'employeeDetails' fired event ItemUpdating which wasn't handled.]
System.Web.UI.WebControls.DetailsView.OnItemUpdating(DetailsViewUpdateEventArgs e) +1574439
System.Web.UI.WebControls.DetailsView.HandleUpdate(String commandArg, Boolean causesValidation) +716
System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +440
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +109
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +115
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +132
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +177
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746


any suggestions