Home All Groups Group Topic Archive Search About
Author
8 Feb 2005 8:30 PM
riaz.hasani
Hi every1, I'm having problem with datagrid updates.

When I click on update I receive an error. Which I'm unable to trace.

I'm posting the code & error.
Any help would be appreciated.

Code
*******************************************************************

    Sub dgdSearch_Update(ByVal sender As Object, ByVal e As
DataGridCommandEventArgs)
        'Read in the values of the updated row
        Dim DemoNumber As Integer =
dgdSearch.DataKeys(e.Item.ItemIndex)
        'Dim strCustomerName As String =
CType(e.Item.Cells(1).Controls(0), TextBox).Text
        'Dim strCustomerNumber As String =
CType(e.Item.Cells(2).Controls(0), TextBox).Text
        Dim strSerialNumber As String =
CType(e.Item.Cells(3).Controls(0), TextBox).Text
        'Dim strModelNumber As String =
CType(e.Item.Cells(4).Controls(0), TextBox).Text
        'Dim strRMANumber As String =
CType(e.Item.Cells(5).Controls(0), TextBox).Text
        'Dim strConditionNumber As String =
CType(e.Item.Cells(6).Controls(0), TextBox).Text
        'Dim strLocationNumber As String =
CType(e.Item.Cells(7).Controls(0), TextBox).Text
        Dim strStatus As String = CType(e.Item.Cells(8).Controls(0),
TextBox).Text
        'Dim strRevisedDate As Date =
CType(e.Item.Cells(9).Controls(0), TextBox).Text
        Dim strNote As String
        If TypeOf (e.Item.Cells(10).Controls(0)) Is TextBox Then
            strNote = CType(e.Item.Cells(10).Controls(0), TextBox).Text
        End If


        'Construct the SQL statement using Parameters
        Dim strSQL As String = "UPDATE [Equip] SET [SerialNumber] =
@SerialNumber, " & _
                               "[Status] = @Status, [Note] = @Note " &
_
                               "WHERE [DemoNumber] = @DemoNumber"

        ' Create Instance of Connection and Command Object
        '1. Create a connection
        Const strConnString As String = ("server=(local);Integrated
Security=SSPI;database=Equipment Log")

        Dim objConn As New SqlConnection(strConnString)
        objConn.Open()

        Dim myCommand As SqlCommand = New SqlCommand(strSQL, objConn)
        myCommand.CommandType = CommandType.Text

        ' Add Parameters to the SQL query
        Dim parameterDemoNumber As SqlParameter = New
SqlParameter("@DemoNumber", SqlDbType.Int, 4)
        parameterDemoNumber.Value = DemoNumber
        myCommand.Parameters.Add(parameterDemoNumber)

        Dim parameterSerialNumber As SqlParameter = New
SqlParameter("@SerialNumber", SqlDbType.VarChar, 10)
        parameterSerialNumber.Value = strSerialNumber
        myCommand.Parameters.Add(parameterSerialNumber)

        Dim parameterStatus As SqlParameter = New
SqlParameter("@Status", SqlDbType.VarChar, 10)
        parameterStatus.Value = strStatus
        myCommand.Parameters.Add(parameterStatus)

        Dim parameterNote As SqlParameter = New SqlParameter("@Note",
SqlDbType.VarChar, 500)
        parameterNote.IsNullable = True
        parameterNote.Value = strNote
        myCommand.Parameters.Add(parameterNote)

        'Execute the UPDATE query
        myCommand.ExecuteNonQuery()

        objConn.Close()

        'Finally, set the EditItemIndex to -1 and rebind the DataGrid
        dgdSearch.EditItemIndex = -1
        BindData()

        'refresh the datagrid
        dgdSearch.DataBind()
    End Sub

*******************************************************************

Error

Prepared statement '(@SerialNumber varchar(10),@Status
varchar(10),@Note varchar(500' expects parameter @Note, which was not
supplied.
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.Data.SqlClient.SqlException: Prepared
statement '(@SerialNumber varchar(10),@Status varchar(10),@Note
varchar(500' expects parameter @Note, which was not supplied.

Source Error:


Line 400:        myCommand.Parameters.Add(parameterDemoNumber)
Line 401:
Line 402:        myCommand.ExecuteNonQuery()   'Execute the UPDATE
query
Line 403:
Line 404:        objConn.Close()


Source File: c:\inetpub\wwwroot\Demo Equip Log\Search Equipment.aspx.vb
   Line: 402

Stack Trace:


[SqlException: Prepared statement '(@SerialNumber varchar(10),@Status
varchar(10),@Note varchar(500' expects parameter @Note, which was not
supplied.]
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream) +742
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   Demo_Equip_Log.Search_Equipment.dgdSearch_Update(Object sender,
DataGridCommandEventArgs e) in c:\inetpub\wwwroot\Demo Equip Log\Search
Equipment.aspx.vb:402

System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs
e) +109
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source,
EventArgs e) +507
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs
args) +26
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source,
EventArgs e) +106
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs
args) +26
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
+120

System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +115
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+138
   System.Web.UI.Page.ProcessRequestMain() +1292




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.2032;
ASP.NET Version:1.1.4322.2032

Author
8 Feb 2005 9:22 PM
Elton Wang
Hi riaz,

It seems something wrong with the strNote.

In your code:

Dim strNote As String
If TypeOf (e.Item.Cells(10).Controls(0)) Is TextBox Then
            strNote = CType(e.Item.Cells(10).Controls(0),
TextBox).Text
End If
' Else strNote = Nothing

So it may cause the trouble.

HTH

Elton Wang
elton_w***@hotmail.com




>-----Original Message-----
>Hi every1, I'm having problem with datagrid updates.
>
>When I click on update I receive an error. Which I'm
unable to trace.
Show quoteHide quote
>
>I'm posting the code & error.
>Any help would be appreciated.
>
>Code
>**********************************************************
*********
>
>    Sub dgdSearch_Update(ByVal sender As Object, ByVal e
As
>DataGridCommandEventArgs)
>        'Read in the values of the updated row
>        Dim DemoNumber As Integer =
>dgdSearch.DataKeys(e.Item.ItemIndex)
>        'Dim strCustomerName As String =
>CType(e.Item.Cells(1).Controls(0), TextBox).Text
>        'Dim strCustomerNumber As String =
>CType(e.Item.Cells(2).Controls(0), TextBox).Text
>        Dim strSerialNumber As String =
>CType(e.Item.Cells(3).Controls(0), TextBox).Text
>        'Dim strModelNumber As String =
>CType(e.Item.Cells(4).Controls(0), TextBox).Text
>        'Dim strRMANumber As String =
>CType(e.Item.Cells(5).Controls(0), TextBox).Text
>        'Dim strConditionNumber As String =
>CType(e.Item.Cells(6).Controls(0), TextBox).Text
>        'Dim strLocationNumber As String =
>CType(e.Item.Cells(7).Controls(0), TextBox).Text
>        Dim strStatus As String = CType(e.Item.Cells
(8).Controls(0),
Show quoteHide quote
>TextBox).Text
>        'Dim strRevisedDate As Date =
>CType(e.Item.Cells(9).Controls(0), TextBox).Text
>        Dim strNote As String
>        If TypeOf (e.Item.Cells(10).Controls(0)) Is
TextBox Then
>            strNote = CType(e.Item.Cells(10).Controls(0),
TextBox).Text
>        End If
>
>
>        'Construct the SQL statement using Parameters
>        Dim strSQL As String = "UPDATE [Equip] SET
[SerialNumber] =
>@SerialNumber, " & _
>                               "[Status] = @Status,
[Note] = @Note " &
Show quoteHide quote
>_
>                               "WHERE [DemoNumber] =
@DemoNumber"
>
>        ' Create Instance of Connection and Command Object
>        '1. Create a connection
>        Const strConnString As String = ("server=
(local);Integrated
>Security=SSPI;database=Equipment Log")
>
>        Dim objConn As New SqlConnection(strConnString)
>        objConn.Open()
>
>        Dim myCommand As SqlCommand = New SqlCommand
(strSQL, objConn)
>        myCommand.CommandType = CommandType.Text
>
>        ' Add Parameters to the SQL query
>        Dim parameterDemoNumber As SqlParameter = New
>SqlParameter("@DemoNumber", SqlDbType.Int, 4)
>        parameterDemoNumber.Value = DemoNumber
>        myCommand.Parameters.Add(parameterDemoNumber)
>
>        Dim parameterSerialNumber As SqlParameter = New
>SqlParameter("@SerialNumber", SqlDbType.VarChar, 10)
>        parameterSerialNumber.Value = strSerialNumber
>        myCommand.Parameters.Add(parameterSerialNumber)
>
>        Dim parameterStatus As SqlParameter = New
>SqlParameter("@Status", SqlDbType.VarChar, 10)
>        parameterStatus.Value = strStatus
>        myCommand.Parameters.Add(parameterStatus)
>
>        Dim parameterNote As SqlParameter = New
SqlParameter("@Note",
>SqlDbType.VarChar, 500)
>        parameterNote.IsNullable = True
>        parameterNote.Value = strNote
>        myCommand.Parameters.Add(parameterNote)
>
>        'Execute the UPDATE query
>        myCommand.ExecuteNonQuery()
>
>        objConn.Close()
>
>        'Finally, set the EditItemIndex to -1 and rebind
the DataGrid
>        dgdSearch.EditItemIndex = -1
>        BindData()
>
>        'refresh the datagrid
>        dgdSearch.DataBind()
>    End Sub
>
>**********************************************************
*********
>
>Error
>
>Prepared statement '(@SerialNumber varchar(10),@Status
>varchar(10),@Note varchar(500' expects parameter @Note,
which was not
Show quoteHide quote
>supplied.
>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.Data.SqlClient.SqlException:
Prepared
>statement '(@SerialNumber varchar(10),@Status varchar
(10),@Note
>varchar(500' expects parameter @Note, which was not
supplied.
>
>Source Error:
>
>
>Line 400:        myCommand.Parameters.Add
(parameterDemoNumber)
>Line 401:
>Line 402:        myCommand.ExecuteNonQuery()   'Execute
the UPDATE
>query
>Line 403:
>Line 404:        objConn.Close()
>
>
>Source File: c:\inetpub\wwwroot\Demo Equip Log\Search
Equipment.aspx.vb
>   Line: 402
>
>Stack Trace:
>
>
>[SqlException: Prepared statement '(@SerialNumber varchar
(10),@Status
>varchar(10),@Note varchar(500' expects parameter @Note,
which was not
>supplied.]
>   System.Data.SqlClient.SqlCommand.ExecuteReader
(CommandBehavior
>cmdBehavior, RunBehavior runBehavior, Boolean
returnStream) +742
>   System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
>   Demo_Equip_Log.Search_Equipment.dgdSearch_Update
(Object sender,
>DataGridCommandEventArgs e) in c:\inetpub\wwwroot\Demo
Equip Log\Search
Show quoteHide quote
>Equipment.aspx.vb:402
>
>System.Web.UI.WebControls.DataGrid.OnUpdateCommand
(DataGridCommandEventArgs
>e) +109
>   System.Web.UI.WebControls.DataGrid.OnBubbleEvent
(Object source,
>EventArgs e) +507
>   System.Web.UI.Control.RaiseBubbleEvent(Object source,
EventArgs
>args) +26
>   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent
(Object source,
>EventArgs e) +106
>   System.Web.UI.Control.RaiseBubbleEvent(Object source,
EventArgs
>args) +26
>   System.Web.UI.WebControls.LinkButton.OnCommand
(CommandEventArgs e)
>+120
>
>System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBa
ckEventHandler.RaisePostBackEvent(String
Show quoteHide quote
>eventArgument) +115
>   System.Web.UI.Page.RaisePostBackEvent
(IPostBackEventHandler
>sourceControl, String eventArgument) +18
>   System.Web.UI.Page.RaisePostBackEvent
(NameValueCollection postData)
>+138
>   System.Web.UI.Page.ProcessRequestMain() +1292
>
>
>
>
>----------------------------------------------------------
----------------------
>Version Information: Microsoft .NET Framework
Version:1.1.4322.2032;
Show quoteHide quote
>ASP.NET Version:1.1.4322.2032
>
>.
>
Author
8 Feb 2005 9:55 PM
riaz.hasani
Hi Elton, Thanks for your response.

I don't know if there is any other way to do this.

When changed the declaration I'm getting a cast error.
Any idea about that.

Thanks

Specified cast is not valid.
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.InvalidCastException: Specified cast is not
valid.

Source Error:


Line 354:        Dim strStatus As String =
CType(e.Item.Cells(8).Controls(0), TextBox).Text
Line 355:        'Dim strRevisedDate As Date =
CType(e.Item.Cells(9).Controls(0), TextBox).Text
Line 356:        Dim strNote As String =
CType(e.Item.Cells(10).Controls(0), TextBox).Text
Line 357:
Line 358:        'Dim strNote, DemoNumber As String


Source File: c:\inetpub\wwwroot\Demo Equip Log\Search Equipment.aspx.vb
   Line: 356

Stack Trace:


[InvalidCastException: Specified cast is not valid.]
   Demo_Equip_Log.Search_Equipment.dgdSearch_Update(Object sender,
DataGridCommandEventArgs e) in c:\inetpub\wwwroot\Demo Equip Log\Search
Equipment.aspx.vb:356

System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs
e) +109
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source,
EventArgs e) +507
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs
args) +26
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source,
EventArgs e) +106
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs
args) +26
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
+120

System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +115
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+138
   System.Web.UI.Page.ProcessRequestMain() +1292




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.2032;
ASP.NET Version:1.1.4322.2032
Author
9 Feb 2005 1:38 AM
Elton Wang
Could you give the datagrid code, I mean from HTML view in
the .aspx.

Thanks,

Elton Wang

Show quoteHide quote
>-----Original Message-----
>Hi Elton, Thanks for your response.
>
>I don't know if there is any other way to do this.
>
>When changed the declaration I'm getting a cast error.
>Any idea about that.
>
>Thanks
>
>Specified cast is not valid.
>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.InvalidCastException: Specified
cast is not
Show quoteHide quote
>valid.
>
>Source Error:
>
>
>Line 354:        Dim strStatus As String =
>CType(e.Item.Cells(8).Controls(0), TextBox).Text
>Line 355:        'Dim strRevisedDate As Date =
>CType(e.Item.Cells(9).Controls(0), TextBox).Text
>Line 356:        Dim strNote As String =
>CType(e.Item.Cells(10).Controls(0), TextBox).Text
>Line 357:
>Line 358:        'Dim strNote, DemoNumber As String
>
>
>Source File: c:\inetpub\wwwroot\Demo Equip Log\Search
Equipment.aspx.vb
>   Line: 356
>
>Stack Trace:
>
>
>[InvalidCastException: Specified cast is not valid.]
>   Demo_Equip_Log.Search_Equipment.dgdSearch_Update
(Object sender,
>DataGridCommandEventArgs e) in c:\inetpub\wwwroot\Demo
Equip Log\Search
Show quoteHide quote
>Equipment.aspx.vb:356
>
>System.Web.UI.WebControls.DataGrid.OnUpdateCommand
(DataGridCommandEventArgs
>e) +109
>   System.Web.UI.WebControls.DataGrid.OnBubbleEvent
(Object source,
>EventArgs e) +507
>   System.Web.UI.Control.RaiseBubbleEvent(Object source,
EventArgs
>args) +26
>   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent
(Object source,
>EventArgs e) +106
>   System.Web.UI.Control.RaiseBubbleEvent(Object source,
EventArgs
>args) +26
>   System.Web.UI.WebControls.LinkButton.OnCommand
(CommandEventArgs e)
>+120
>
>System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBa
ckEventHandler.RaisePostBackEvent(String
Show quoteHide quote
>eventArgument) +115
>   System.Web.UI.Page.RaisePostBackEvent
(IPostBackEventHandler
>sourceControl, String eventArgument) +18
>   System.Web.UI.Page.RaisePostBackEvent
(NameValueCollection postData)
>+138
>   System.Web.UI.Page.ProcessRequestMain() +1292
>
>
>
>
>----------------------------------------------------------
----------------------
>Version Information: Microsoft .NET Framework
Version:1.1.4322.2032;
Show quoteHide quote
>ASP.NET Version:1.1.4322.2032
>
>.
>
Author
9 Feb 2005 4:42 AM
riaz.hasani
Sure Elton here it is hope you will be able to figure it out.
Thanks for your help.


<asp:datagrid id="dgdSearch" style="Z-INDEX: 103; LEFT: 48px; POSITION:
absolute; TOP: 504px" runat="server" Width="272px" BackColor="White"
Height="192px" CellSpacing="1" AllowSorting="True"
DataMember="Equip" DataKeyField="DemoNumber"
AutoGenerateColumns="False" AllowCustomPaging="True" AllowPaging="True"
GridLines="Horizontal" CellPadding="3" BorderWidth="1px"
BorderStyle="None" BorderColor="#E7E7FF" ShowFooter="True"
OnCancelCommand="dgdSearch_Cancel" OnEditCommand="dgdSearch_Edit"
OnUpdateCommand="dgdSearch_Update">
<FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7"
BackColor="#738A9C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle>
<ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#F7F7F7"
BackColor="#4A3C8C"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="DemoNumber" ReadOnly="True"
HeaderText="Demo Number"></asp:BoundColumn>
<asp:BoundColumn DataField="CustomerName" ReadOnly="True"
HeaderText="Customer Name"></asp:BoundColumn>
<asp:BoundColumn DataField="CustomerNumber" ReadOnly="True"
HeaderText="Customer Number"></asp:BoundColumn>
<asp:BoundColumn DataField="SerialNumber" HeaderText="Serial
Number"></asp:BoundColumn>
<asp:BoundColumn DataField="ModelNumber" ReadOnly="True"
HeaderText="Model Number"></asp:BoundColumn>
<asp:BoundColumn DataField="RMANumber" ReadOnly="True" HeaderText="RMA
Number"></asp:BoundColumn>
<asp:BoundColumn DataField="ConditionNumber" ReadOnly="True"
HeaderText="Condition Number"></asp:BoundColumn>
<asp:BoundColumn DataField="LocationNumber" ReadOnly="True"
HeaderText="Location Number"></asp:BoundColumn>
<asp:BoundColumn DataField="Status"
HeaderText="Status"></asp:BoundColumn>
<asp:BoundColumn DataField="RevisedDate" ReadOnly="True"
HeaderText="Revised Date"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Notes">
<EditItemTemplate>
<asp:TextBox id="txtNote" TextMode="MultiLine" runat="server" Text='<%#
DataBinder.Eval(Container, "DataItem.Note") %>'> </asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update"
CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C"
Position="TopAndBottom" BackColor="#E7E7FF"
Mode="NumericPages"></PagerStyle>
</asp:datagrid>