ایجاد دکمه حذف سفارشی در Interactive Grid در اوراکل اپکس

در برخی از پروژه‌ها، ممکن است نیاز داشته باشیم یک دکمه حذف سفارشی در Interactive Grid در اوراکل اپکس ایجاد کنیم تا ظاهر کاربرپسندتری را نسبت به دکمه حذف پیش‌فرض اوراکل APEX ارائه دهیم. بعنوان مثال با استفاده از یک آیکون سطل زباله قرمز رنگ بخواهیم دکمه حذف را نمایش دهیم.

برای انجام دادن این کار، ما از یک ستون HTML برای نمایش دکمه استفاده می‌کنیم و حذف رکوردها را با JavaScript و PL/SQL (AJAX Callback) انجام خواهیم داد.

مراحل پیاده‌سازی به ترتیب زیر خواهد بود:

1- افزودن دکمه حذف سفارشی در اوراکل اپکس

برای این منظور ابتدا در Interactive Grid یک ستون جدید با نوع HTML Expression ایجاد کنید و کد زیر را در آن قرار دهید:

html
<button class="delete-reu-btn"
data-nr-reu="&NR_REU."
data-nr-aci="&NR_ACI."
style="border: none; background: none; cursor: pointer;">
<i class="fa fa-trash-o" style="color: red; font-size: 18px;"></i>
</button>

نکات:

  • data-nr-reu و data-nr-aci شامل شناسه‌های مورد نیاز برای حذف هستند.

  • <i> از FontAwesome استفاده می‌کنه تا آیکون سطل زباله قرمز نمایش داده بشه.

2- کد JavaScript (رویداد When Page Loads)

در صفحه مورد نظر، ابتدا یک Dynamic Action از نوع “When Page Loads” را ایجاد کنید و سپس در آن از کد زیر استفاده نمایید:

javascript
$(document).on("click", ".delete-reu-btn", function (event) {
event.stopPropagation();
event.preventDefault();
var idReu = $(this).data(“nr-reu”);
var idAci = $(this).data(“nr-aci”);var confirmar = confirm(“Are you sure you want to delete?”);
if (!confirmar) {
return false;
}apex.server.process(“AJAXCB_DELETE”, {
x01: idReu,
x02: idAci
}, {
success: function () {
location.reload(); // Refresh page after successful delete
},
error: function (request) {
alert(“Error while deleting: “ + request.responseText);
}
});return false;
});

3- فرآیند PL/SQL (نوع: AJAX Callback)

در بخش Processes، یک فرآیند جدید با نام AJAXCB_DELETE و نوع AJAX Callback اضافه کنید. کد PL/SQL زیر را قرار دهید:

plsql
begin
delete from t_table
where nr_aci = apex_application.g_x02
and nr_reu = apex_application.g_x01;
commit;apex_json.initialize_output;
apex_json.open_object;
apex_json.write(‘status’, ‘OK’);
apex_json.close_object;exception
when others then
apex_json.initialize_output;
apex_json.open_object;
apex_json.write(‘status’, ‘NOK’);
apex_json.write(‘message’, sqlerrm);
apex_json.close_object;
end;

توجه:

  • t_table را با نام جدول موردنظر خودتان جایگزین کنید.

  • این فرآیند با استفاده از پارامترهای x01 و x02 رکورد را حذف می‌کند و یک پاسخ JSON به کلاینت برمی‌گرداند.


دکمه حذف سفارشی در اوراکل اپکس