Phương thức xóa trong chế độ xem lưới ASP.NET không kích hoạt khi sử dụng javascript để xác nhận xóa

lập trình

[ad_1]

Chào các bạn,

trong tôi asp:GridViewthành phần tôi có thiết lập DeleteMethod. Ngoài ra CommandField được thiết lập:

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

TRONG OnRowDataBound() phương pháp tôi kiểm tra DeleteButton và thêm javascript vào sự kiện onclientclick.
Javascript hoạt động, nhưng Ok không dẫn đến việc bắt đầu DeleteMethod trong CodeBehind.

Khi tôi không thêm javascript, phương thức này sẽ hoạt động.

Làm cách nào để nút lệnh xóa hoạt động với javascript?

** Sử dụng .NET Framework 4.7.2

Những gì tôi đã thử:

Mã của tôi để thêm 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?\");");
    }

Giải pháp 1

Các nút liên kết/hình ảnh WebForms được triển khai bằng cách gọi một số JavaScript khi bạn nhấp vào chúng.

Nhưng bạn đã thêm JavaScript trước cái mà trả lại vô điều kiện true/falsenghĩa là mã này sẽ không bao giờ được gọi.

Nếu bạn xem nguồn trang của mình, bạn sẽ thấy một cái gì đó giống như:

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

Rõ ràng phương thức postback không bao giờ có thể được gọi.

Thay đổi của bạn OnClientClick chỉ return nếu người dùng chọn hủy:

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

[ad_2]

コメント

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