El método de eliminación en ASP.NET gridview no se activa cuando se usa javascript para confirmar la eliminación

programación


Hola amigos,

en mi asp:GridViewcomponente Tengo la configuración DeleteMethod. También se configura CommandField:

ÁSPID
<asp:CommandField ShowEditButton="true" ShowDeleteButton="true" ButtonType="Image" ControlStyle-Width="24px"
    EditImageUrl="~/Images/edit-icon-png-3601.png" CancelImageUrl="~/Images/close-button-png-30225.png" UpdateImageUrl="~/Images/check-tick-icon-14150.png" DeleteImageUrl="~/Images/trash-can-24846.png" />

En OnRowDataBound() método que verifico para el DeleteButton y agregue javascript al evento onclientclick.
El javascript funciona, pero el Ok no lleva a iniciar el DeleteMethod en Código subyacente.

Cuando no agrego javascript, el método funciona.

¿Cómo hacer que un botón de comando de eliminación funcione con javascript?

** Usando .NET Framework 4.7.2

Lo que he probado:

Mi código para agregar el javascript:

C
public static void AddDeleteMessage(GridViewRow row)
{
    int nrControls = row.Controls.Count;
    Control lastGridViewCell = row.Controls[nrControls - 1];

    var deleteButton = lastGridViewCell.Controls.OfType<ImageButton>().FirstOrDefault(btn => btn.CommandName == "Delete");
    if (deleteButton != null)
    {
        deleteButton.OnClientClick = string.Format("javascript: return confirm(\"Are you sure?\");");
    }

Solución 1

Los botones de enlace/imagen de WebForms se implementan llamando algo de JavaScript al hacer clic en ellos.

Pero has añadido JavaScript. antes aquello que regresa incondicionalmente true/falselo que significa que este código nunca será llamado.

Si ve la fuente de su página, verá algo parecido a:

HTML
onclick="javascript: return confirm(...); DoPostBack(...);"

Claramente, nunca se puede llamar al método de devolución de datos.

Cambia tu OnClientClick a solo return si el usuario opta por cancelar:

C#
deleteButton.OnClientClick = "if(!confirm(\"Are you sure?\")){return false;}";

コメント

タイトルとURLをコピーしました