Solved

ASP.NET GridView RowUpdating command doesn't fire

Posted on 2010-08-23
11
948 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
Comment Utility
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
Comment Utility
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
Comment Utility
Can u share your cs or vb file code.??
0
 

Author Comment

by:spiral2007
Comment Utility
Which part do you want?
0
 
LVL 12

Expert Comment

by:Kaushal Arora
Comment Utility
The DataSource with which you are binding your gridview.
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 

Author Comment

by:spiral2007
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
Nothing changed..
0
 

Accepted Solution

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

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Foolproof security solutions has become one of the key necessities of every e-commerce or Internet banking website. If you too own an online shopping site then its vital for you to equip your web portal with customer security features that can allow…
It’s a strangely common occurrence that when you send someone their login details for a system, they can’t get in. This article will help you understand why it happens, and what you can do about it.
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 choose which pages of your form are visible to your users based on their inputs. The page rules feature provides you with an opportunity to create if:then statements for y…

771 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

10 Experts available now in Live!

Get 1:1 Help Now