www w3org spec section official etiquetas asp.net javascript gridview

asp.net - w3org - Javascript antes de asp: ButtonField click



w3c etiquetas html (5)

Descubrí que la forma más elegante de hacerlo es usar jQuery para conectar el evento onClick:

<script type="text/javascript"> $(".deleteLink").click(function() { return confirm(''Are you sure you wish to delete this record?''); }); </script> ... <asp:ButtonField ButtonType="Link" Text="Delete" CommandName="Delete" ItemStyle-CssClass="deleteLink" />

Tenga en cuenta que utilizo una clase de CSS arbitraria para identificar el botón de enlace.

Tengo un control GridView en una aplicación Asp.net, que tiene un <asp:buttonField> de type="image" y CommandName="Delete" .

¿Hay alguna forma de ejecutar una pieza de javascript antes de llegar al evento OnRowDelete ?

Solo quiero una confirmación simple antes de eliminar la fila.

¡Gracias!

EDITAR : <asp:ButtonField> etiqueta <asp:ButtonField> no tiene un atributo OnClientClick .


En el controlador de eventos RowCreated GridView , use FindControl para buscar el botón con nombre y agréguelo a la colección de Atributos:

btn.Attributes.Add("onclick", "return confirm(''delete this record?'');");

Su código ASP.Net solo se ejecutará si confirm () es verdadero, es decir, ha sido aprobado.


Entonces tengo una función de JavaScript:

function confirmDeleteContact() { if (confirm("Are you sure you want to delete this contact?")) { document.all.answer.value="yes"; } else { document.all.answer.value="no"; } }

y lo cableo a un elemento de la cuadrícula así:

Sub dgbind(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles dgcontacts.ItemDataBound Select Case e.Item.ItemType Case ListItemType.Item, ListItemType.AlternatingItem CType(e.Item.Cells(9).Controls(0), System.Web.UI.WebControls.LinkButton).Attributes.Add("onclick", "javascript:confirmDeleteContact();") End Select End Sub

Este es un código antiguo, así que veo algunas cosas que podría cambiar, pero la moraleja es esta: si todo lo demás falla, agregue el javascript "onClick" durante el enlace de fila. "document.all.answer.value" es un campo oculto que tiene runat=server para que pueda leer el valor en la devolución.


Yo usaría un TemplateField en su lugar, y llenaría el ItemTemplate con un botón asp: regular o asp: ImageButton, dependiendo de lo que sea necesario. Luego puede ejecutar la misma lógica que el evento RowCommand cuando intercepta el comando Eliminar.

En cualquiera de esos botones usaría la propiedad OnClientClick para ejecutar el diálogo de confirmación de JavaScript antes de esto.

<script type="text/javascript"> function confirmDelete() { return confirm("Are you sure you want to delete this?"); } </script> ... <asp:TemplateField> <ItemTemplate> <asp:ImageButton ID="DeleteButton" runat="server" ImageUrl="..." AlternateText="Delete" ToolTip="Delete" CommandName="Delete" CommandArgument=''<%# Eval("ID") %>'' OnClientClick="return confirmDelete();" /> </ItemTemplate> </asp:TemplateField>


mejor para ti el complemento de referencia System.Windows.Forms si usas buttonfield ... Siempre está disponible en todos los .net framework y es compatible con asp.net ..

esta es tu elección si el buttonfield es tu mejor opción ... muestra:

using System.Windows.Forms; protected void BorrowItem_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Delete") { if (System.Windows.Forms.MessageBox.Show("Do you want to delete", "Delete",MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification) != System.Windows.Forms.DialogResult.OK) { return; } } //Continue execution... } //drimaster