Solved

ASP.NET GridView RowUpdating command doesn't fire

Posted on 2010-08-23
11
965 Views
Last Modified: 2012-05-10
Hello everyone.

I have a gridview with asp:commandfield for edit/update/cancel and delete commands. When I'm trying to update a row the RowUpdating event doesn't fire. The other 3 commands are working fine.
When I'm over the update link I see the following message on IE status bar: javascript:WebFor_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$body$gvWeighs$ctl06$ctl00","",true,"","",false,true))
In my web application I have the same markup code for the gridview in other pages and the RowUpdating event works fine . The only difference in this one is that in one of my edititemtemplate i have a dropdownlist.

I'm adding the markup code for that.

I'm databinding the data to the gridview manually with a dataset.

Can anyone help me??
Thanks in advnace.
<asp:GridView ID="gvWeighs" runat="server" CellPadding="4" ForeColor="#333333" BorderColor="CornflowerBlue" BorderStyle="Solid" Font-Names="Verdana" Font-Size="8.5pt" AutoGenerateColumns="False">

<Columns>

<asp:CommandField CancelText="Cancel" EditText="Edit" ShowEditButton="True" UpdateText="Save"/>

<asp:CommandField ButtonType="Image" DeleteImageUrl="~/Images/delete.jpg" ShowCancelButton="False" ShowDeleteButton="True" />

<asp:TemplateField HeaderText="Car">

<EditItemTemplate>

<asp:DropDownList ID="Car" runat="server" DataSourceID="Cars" DataTextField="CarCode" DataValueField="CarID" SelectedValue='<%# Bind("CarID") %>'></asp:DropDownList>

<asp:SqlDataSource ID="Cars" runat="server" ConnectionString="<%$ ConnectionStrings:skip %>"

SelectCommand="SELECT [CarID], [CarCode] FROM [Cars]"</asp:SqlDataSource>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Car" runat="server" Text='<%# Bind("CarCode") %>'></asp:Label>

</ItemTemplate>

</Columns>

</asp:GridView>

Open in new window

0
Comment
Question by:spiral2007
  • 6
  • 4
11 Comments
 
LVL 12

Expert Comment

by:Kaushal Arora
ID: 33499070
Kindly use the below given markup for your gridview.

You were missing the closing tag of asp:TemplateField and also the closing '>' for the SqlDataSource.

Hope it helps you solve your problem.
<asp:GridView ID="gvWeighs" runat="server" CellPadding="4" ForeColor="#333333" BorderColor="CornflowerBlue" BorderStyle="Solid" Font-Names="Verdana" Font-Size="8.5pt" AutoGenerateColumns="False">
<Columns>
<asp:CommandField CancelText="Cancel" EditText="Edit" ShowEditButton="True" UpdateText="Save"/>
<asp:CommandField ButtonType="Image" DeleteImageUrl="#" ShowCancelButton="False" ShowDeleteButton="True" />
<asp:TemplateField HeaderText="Car">
<EditItemTemplate>
<asp:DropDownList ID="Car" runat="server" DataSourceID="Cars" DataTextField="CarCode" DataValueField="CarID" SelectedValue='<%# Bind("CarID") %>'></asp:DropDownList>
<asp:SqlDataSource ID="Cars" runat="server" ConnectionString="<%$ ConnectionStrings:skip %>"
SelectCommand="SELECT [CarID], [CarCode] FROM [Cars]"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Car" runat="server" Text='<%# Bind("CarCode") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Open in new window

0
 

Author Comment

by:spiral2007
ID: 33499089
I have them in my markup. I probably deleted them when I copied the markup by mistake.
Thanks though
0
 
LVL 12

Expert Comment

by:Kaushal Arora
ID: 33499324
Can u share your cs or vb file code.??
0
 

Author Comment

by:spiral2007
ID: 33499350
Which part do you want?
0
 
LVL 12

Expert Comment

by:Kaushal Arora
ID: 33499624
The DataSource with which you are binding your gridview.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:spiral2007
ID: 33499671
Here it is
Public Function GetWeighs(ByRef ds As DataSet, ByRef errorMessage As String) As Boolean

        Dim control As Boolean = False

        Dim da As SqlDataAdapter

        Dim sql As String = ""

        Try

            DatabaseConnection.OpenConnection()

            sql = "SELECT Weighs.CarID FROM Weighs INNER JOIN Cars ON Cars.CarID = Weighs.CarID ORDER BY Weighs.WeighDate"

            da = New SqlDataAdapter(sql, DatabaseConnection.connection)

            da.Fill(ds, "Weighs")

            control = True

        Catch ex As Exception

            control = False

            errorMessage = ex.Message

        Finally

            DatabaseConnection.CloseConnection()

        End Try

        Return control

End Function

Open in new window

0
 
LVL 12

Expert Comment

by:Kaushal Arora
ID: 33499683
You have not  given the code for the GridView1.DataSource and DataBind() functions. I am asking that part where you are fetching records from DB and binding the gridview and then handling the events of the gridview.
0
 

Author Comment

by:spiral2007
ID: 33499738
Sorry copy mistake again..
This is the correct one

Public Sub loadWeighs()

        Dim ds As New DataSet

        Dim errorMessage As String = ""

        Dim control As Boolean = Me.GetWeighs(ds, errorMessage)

        If control Then

            Me.gvWeighs.DataSource = ds.Tables("Weighs")

            Me.gvWeighs.DataBind()

        Else

            If errorMessage = "" Then

                Me.gvWeighs.DataSource = ds.Tables("Weighs")

                Me.gvWeighs.DataBind()

                Me.lblerror.Text = ""

            Else

                Me.lblerror.Text = errorMessage

            End If

        End If

    End Sub



Protected Sub gvWeighs_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvWeighs.RowEditing

        If Session("update").ToString() = ViewState("update").ToString() Then

            Me.gvWeighs.EditIndex = e.NewEditIndex

            Me.lblerror.Text = ""

            Me.loadWeighs()

        End If

End Sub



Protected Sub gvWeighs_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvWeighs.RowUpdating

        If Session("update").ToString() = ViewState("update").ToString() Then

            Dim errorMessage As String = ""

            Dim control As Boolean = False

            Dim dCarID As DropDownList = Me.gvWeighs.Rows(e.RowIndex).FindControl("gvlblCarCode")

            Dim CarID As Integer = Convert.ToInt32(dCarID.SelectedValue)

            Dim WeighID As Integer = Convert.ToInt32(hfWeighID.Value)

            control = Me.UpdateWeighs(WeighID,CarID,errorMessage)

            If Not control Then

                Me.lblerror.Text = errorMessage

            Else

                Session("update") = Server.UrlEncode(System.DateTime.Now.ToString())

                Me.gvWeighs.EditIndex = -1

                Me.loadWeighs()

            End If

        End If

 End Sub



Public Function GetWeighs(ByRef ds As DataSet, ByRef errorMessage As String) As Boolean

        Dim control As Boolean = False

        Dim da As SqlDataAdapter

        Dim sql As String = ""

        Try

            DatabaseConnection.OpenConnection()

            sql = "SELECT Weighs.CarID FROM Weighs INNER JOIN Cars ON Cars.CarID = Weighs.CarID ORDER BY Weighs.WeighDate"

            da = New SqlDataAdapter(sql, DatabaseConnection.connection)

            da.Fill(ds, "Weighs")

            control = True

        Catch ex As Exception

            control = False

            errorMessage = ex.Message

        Finally

            DatabaseConnection.CloseConnection()

        End Try

        Return control

End Function



 Public Function UpdateWeighs(ByVal WeighID as Integer,ByVal CarID As Integer, ByRef errorMessage As String) As Boolean

        Dim control As Boolean = False

        Dim sql As String = ""

        Dim cmd As SqlCommand

        Try

            DatabaseConnection.OpenConnection()

            sql = "UPDATE Weighs SET CarID= {1} WHERE WeighID = {0} "

            sql = String.Format(sql, WeighID, CarID)

            cmd = New SqlCommand(sql, DatabaseConnection.connection)

            Dim rowsAffected As Integer = cmd.ExecuteNonQuery()

            If rowsAffected < 1 Then

                control = False

            Else

                control = True

            End If

        Catch ex As Exception

            control = False

            errorMessage = ex.Message

        Finally

            DatabaseConnection.CloseConnection()

        End Try

        Return control

End Function

Open in new window

0
 
LVL 14

Expert Comment

by:Dhanasekaran Sengodan
ID: 33500288
add "OnRowUpdating" event in GridView Tag


<asp:GridView ID="gvWeighs" runat="server" CellPadding="4" ForeColor="#333333" BorderColor="CornflowerBlue" BorderStyle="Solid" Font-Names="Verdana" Font-Size="8.5pt" AutoGenerateColumns="False" OnRowUpdating="gvWeighs_RowUpdating">

Open in new window

0
 

Author Comment

by:spiral2007
ID: 33500335
Nothing changed..
0
 

Accepted Solution

by:
spiral2007 earned 0 total points
ID: 33521102
I solved it on my own.
I had to disable my control validators on a popup panel before editing.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

New Relic: Our company recently started researching several products to figure out what were the best ways for us to increase our web page speed and to quickly identify performance problems that we may be having. One of the products we evaluated wa…
Introduction A frequently used term in Object-Oriented design is "SOLID" which is a mnemonic acronym that covers five principles of OO design.  These principles do not stand alone; there is interplay among them.  And they are not laws, merely princ…
This video teaches users how to migrate an existing Wordpress website to a new domain.
Use Wufoo, an online form creation tool, to make powerful forms. Learn how to selectively show certain fields based on user input using rules to gather relevant information and data from your forms. The rules feature provides you with an opportunity…

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now