使用 javascript 确认删除时,ASP.NET gridview 中的删除方法不会触发

编程

[ad_1]

嗨伙计,

在我的 asp:GridView组件我有DeleteMethod 设置。 还设置了 CommandField:

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

OnRowDataBound() 方法我检查 DeleteButton 并将 javascript 添加到 onclientclick 事件。
javascript 可以工作,但是“确定”不会导致启动 DeleteMethod 在代码隐藏中。

当我不添加 JavaScript 时,该方法有效。

如何让删除命令按钮与 JavaScript 一起工作?

** 使用.NET Framework 4.7.2

我尝试过的:

我添加 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?\");");
    }

解决方案1

WebForms 链接/图像按钮是通过在单击它们时调用一些 JavaScript 来实现的。

但是你已经添加了JavaScript 无条件返回的东西 true/false,这意味着这段代码永远不会被调用。

如果您查看页面的源代码,您将看到类似以下内容的内容:

超文本标记语言
onclick="javascript: return confirm(...); DoPostBack(...);"

显然,永远无法调用回发方法。

改变你的 OnClientClick 只到 return 如果用户选择取消:

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

[ad_2]

コメント

标题和URL已复制