Principales respuestas
Return siempre es true en un UpdatePanel

Pregunta
-
Hola amigos, mi duda es la siguiente.
Tengo el siguiente codigo javascript :
function Confirmar() { var borrar = confirm('Desea eliminar el centro de costo?'); if (borrar) { return false; } else { return true; } }
y en mi html un Updatepanel y dentro un Gridview con lo siguiente :
<asp:UpdatePanel ID="upCostos" runat="server" UpdateMode="Conditional"> <ContentTemplate> . . . <Columns > <asp:TemplateField > <ItemTemplate> <asp:LinkButton ID="cmdEliminar" runat="server" CommandName="Delete" ToolTip="Eliminar" OnClientClick="return Confirmar();" ForeColor="#cc0000"> <i class="fa fa-trash-o fa-lg"></i></asp:LinkButton> </ItemTemplate> <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" /> </asp:TemplateField>
El asunto es que siempre que hago click en cmdEliminar este se se ejecuta, por mas que en el mensaje java haga click en "Cancelar".
Saben como puedo evitar esto? es decir, que solo se ejecute el codebehind si efectivamente he respondido al botón "Aceptar"
Saludos.
Respuestas
-
Prueba a modifcar así tu codigo JS
function Confirmar(event) { var borrar = confirm('Desea eliminar el centro de costo?'); if (borrar) { event.preventDefault(); return false; } else { return true; } }
y en tu LinkButton
<asp:LinkButton ID="cmdEliminar" runat="server" CommandName="Delete" ToolTip="Eliminar" OnClientClick="return Confirmar(event);" ForeColor="#cc0000" OnClick="cmdEliminar_Click" > <i class="fa fa-trash-o fa-lg"></i> </asp:LinkButton>
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Editado Sergio ParraModerator jueves, 10 de marzo de 2016 16:04
- Propuesto como respuesta José De AlvaModerator viernes, 18 de marzo de 2016 3:38
- Marcado como respuesta José De AlvaModerator viernes, 25 de marzo de 2016 19:51
Todas las respuestas
-
Hoa,
debes definir en tu LinkButton al menos un Atributo OnCommand o un OnClick ya que estos son los que se ejecutan desde el lado servidor
Tu LinkButton quedaría
<asp:LinkButton ID="cmdEliminar" runat="server" CommandName="Delete" ToolTip="Eliminar" OnClientClick="return Confirmar();" ForeColor="#cc0000" OnCommand="cmdEliminar_Command" > <i class="fa fa-trash-o fa-lg"></i> </asp:LinkButton>
y en tu codebehind
void cmdEliminar_Command(Object sender, CommandEventArgs e) { // tu proceso }
Lo mismo harías par OnClick
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Propuesto como respuesta José De AlvaModerator viernes, 18 de marzo de 2016 3:39
-
<asp:LinkButton ID="cmdEliminar" runat="server" CommandName="Delete" ToolTip="Eliminar" OnClientClick="return Confirmar();" ForeColor="#cc0000" OnClick="cmdEliminar_Click" > <i class="fa fa-trash-o fa-lg"></i> </asp:LinkButton>
void cmdEliminar_Click(Object sender, CommandEventArgs e) { // tu proceso }
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Editado Sergio ParraModerator jueves, 10 de marzo de 2016 8:51
- Propuesto como respuesta José De AlvaModerator viernes, 18 de marzo de 2016 3:39
-
Hola Sergio, gracias por responder.
Lo que indicas funciona, y deberia marcarlo como solución, pero olvide indicar que aparte del botón eliminar he hecho lo siguiente :
en el codebehind :
Private Sub gvCostos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvCostos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor = '#E8E8E8';this.style.cursor='pointer'") e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor = 'white';") e.Row.Attributes("onclick") = ClientScript.GetPostBackClientHyperlink(Me.gvCostos, "Select$" + e.Row.RowIndex.ToString) End If End Sub
por lo que al pasar el cursor por las filas estas se van iluminando, pero al hacer click en el botón eliminar y luego hacer click en "cancelar" (del javascript) ya no se ejecuta cmdEliminar_Click (lo cual es correcto), pero se termina ejecuta lo siguiente:
Protected Sub gvCostos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles gvCostos.SelectedIndexChanged Dim dtCosto As New DataTable Dim pkRegistro As Integer = Me.gvCostos.SelectedValue Me.hfId.Value = pkRegistro . . .
Alguna forma de impedir que esto se ejecute con el botón "eliminar", es decir, si se debe ejecutar al hacer click en cualquier parte de la fila, menos en el botón "eliiminar"
Saludos.
-
Prueba a modifcar así tu codigo JS
function Confirmar(event) { var borrar = confirm('Desea eliminar el centro de costo?'); if (borrar) { event.preventDefault(); return false; } else { return true; } }
y en tu LinkButton
<asp:LinkButton ID="cmdEliminar" runat="server" CommandName="Delete" ToolTip="Eliminar" OnClientClick="return Confirmar(event);" ForeColor="#cc0000" OnClick="cmdEliminar_Click" > <i class="fa fa-trash-o fa-lg"></i> </asp:LinkButton>
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Editado Sergio ParraModerator jueves, 10 de marzo de 2016 16:04
- Propuesto como respuesta José De AlvaModerator viernes, 18 de marzo de 2016 3:38
- Marcado como respuesta José De AlvaModerator viernes, 25 de marzo de 2016 19:51
-