|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Problem with datagrid updateWhen 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 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----- unable to trace.>Hi every1, I'm having problem with datagrid updates. > >When I click on update I receive an error. Which I'm Show quoteHide quote > (8).Controls(0),>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 Show quoteHide quote >TextBox).Text [Note] = @Note " &> '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, Show quoteHide quote >_ which was not> "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, Show quoteHide quote >supplied. Equipment.aspx.vb>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 > Line: 402 which was not> >Stack Trace: > > >[SqlException: Prepared statement '(@SerialNumber varchar (10),@Status >varchar(10),@Note varchar(500' expects parameter @Note, >supplied.] Equip Log\Search> 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 Show quoteHide quote >Equipment.aspx.vb:402 ckEventHandler.RaisePostBackEvent(String> >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 Show quoteHide quote >eventArgument) +115 Version:1.1.4322.2032;> 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 Show quoteHide quote >ASP.NET Version:1.1.4322.2032 > >. > 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 Could you give the datagrid code, I mean from HTML view in
the .aspx. Thanks, Elton Wang Show quoteHide quote >-----Original Message----- cast is not>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 Show quoteHide quote >valid. Equipment.aspx.vb> >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 > Line: 356 Equip Log\Search> >Stack Trace: > > >[InvalidCastException: Specified cast is not valid.] > Demo_Equip_Log.Search_Equipment.dgdSearch_Update (Object sender, >DataGridCommandEventArgs e) in c:\inetpub\wwwroot\Demo Show quoteHide quote >Equipment.aspx.vb:356 ckEventHandler.RaisePostBackEvent(String> >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 Show quoteHide quote >eventArgument) +115 Version:1.1.4322.2032;> 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 Show quoteHide quote >ASP.NET Version:1.1.4322.2032 > >. > 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> |
|||||||||||||||||||||||