لا يتم تشغيل طريقة الحذف في عرض الشبكة ASP.NET عند استخدام جافا سكريبت لتأكيد الحذف


مرحبا يا رفاق،

في asp:GridViewالمكون لدي إعداد RemoveMethod. تم أيضًا إعداد CommandField:

آسيا والمحيط الهادئ
<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.
تعمل جافا سكريبت، لكن موافق لا يؤدي إلى بدء تشغيل DeleteMethod في كود بيهايند.

عندما لا أقوم بإضافة جافا سكريبت، تعمل الطريقة.

كيفية جعل زر أمر الحذف يعمل مع جافا سكريبت؟

** استخدام برنامج .NET Framework 4.7.2

ما حاولت:

الكود الخاص بي لإضافة جافا سكريبت:

ج
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 عند النقر فوقها.

لكنك أضفت جافا سكريبت قبل ما يعود دون قيد أو شرط true/falseمما يعني أنه لن يتم استدعاء هذا الرمز أبدًا.

إذا قمت بعرض مصدر صفحتك، فسترى شيئًا يشبه:

لغة البرمجة
onclick="javascript: return confirm(...); DoPostBack(...);"

من الواضح أنه لا يمكن استدعاء طريقة إعادة النشر أبدًا.

تغيير الخاص بك OnClientClick الى فقط return إذا اختار المستخدم الإلغاء:

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

コメント

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