spiral2007
asked on
ASP.NET GridView RowUpdating command doesn't fire
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_DoPostBa ckWithOpti ons(new WebForm_PostBackOptions("c tl00$body$ gvWeighs$c tl06$ctl00 ","",true, "","",fals e,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.
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_DoPostBa
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>
ASKER
I have them in my markup. I probably deleted them when I copied the markup by mistake.
Thanks though
Thanks though
Can u share your cs or vb file code.??
ASKER
Which part do you want?
The DataSource with which you are binding your gridview.
ASKER
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
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.
ASKER
Sorry copy mistake again..
This is the correct one
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
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">
ASKER
Nothing changed..
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You were missing the closing tag of asp:TemplateField and also the closing '>' for the SqlDataSource.
Hope it helps you solve your problem.
Open in new window