【解決方法】JavaScript を使用して削除を確認すると、ASP.NET グリッドビューの Delete メソッドが起動しない

プログラミングQA


こんにちは皆さん。

私の中で 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 そして、onclientclick イベントに JavaScript を追加します。
JavaScript は機能しますが、[OK]をクリックしても起動しません。 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

Web フォームのリンク/画像ボタンは、クリック時に JavaScript を呼び出すことによって実装されます。

ただし、JavaScript を追加しました 前に 無条件に戻ってくるもの true/false、このコードは決して呼び出されないことを意味します。

ページのソースを表示すると、次のような内容が表示されます。

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

明らかに、ポストバック メソッドを呼び出すことはできません。

変更してください OnClientClick だけに return ユーザーがキャンセルを選択した場合:

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

コメント

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