La méthode de suppression dans ASP.NET Gridview ne se déclenche pas lors de l’utilisation de javascript pour confirmer la suppression

la programmation


Salut les gens,

dans mon asp:GridViewcomposant J’ai la configuration DeleteMethod. CommandField est également configuré :

ASPIC
<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" />

Dans OnRowDataBound() méthode que je vérifie pour le DeleteButton et ajoutez du javascript à l’événement onclientclick.
Le javascript fonctionne, mais le Ok ne conduit pas au démarrage du DeleteMethod dans CodeBehind.

Quand je n’ajoute pas le javascript, la méthode fonctionne.

Comment faire fonctionner un bouton de commande de suppression avec javascript ?

** Utilisation du .NET Framework 4.7.2

Ce que j’ai essayé :

Mon code pour ajouter le 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?\");");
    }

Solution 1

Les boutons de lien/image WebForms sont implémentés en appelant du JavaScript lorsque vous cliquez dessus.

Mais vous avez ajouté JavaScript avant ce qui revient inconditionnellement true/falsece qui signifie que ce code ne sera jamais appelé.

Si vous affichez la source de votre page, vous verrez quelque chose qui ressemble à :

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

Il est clair que la méthode de publication ne peut jamais être appelée.

Change ton OnClientClick à seulement return si l’utilisateur choisit d’annuler :

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

コメント

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