Solved

ASP.NET GridView RowUpdating command doesn't fire

Posted on 2010-08-23
11
973 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
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 

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
 

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

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

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

Thoughout my experience working on eCommerce web applications I have seen applications succumbing to increased user demand and throughput. With increased loads the response times started to spike, which leads to user frustration and lost sales. I ha…
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.
Wufoo.com provides powerful tools for surveying targeted groups, and utilizing data from completed surveys to find trends, discover areas of demand or customer expectation, and make business decisions on products or services.

776 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