I am trying to implement nested view in abp framework project. Please help me to implement this by looking to the code
this is my html side code
<abp-table striped-rows="true" id="QueuesTable">
<thead>
<tr>
<th>@L["Actions"]</th>
<th>@L["Name"]</th>
<th>@L["TicketRangeMin"]</th>
<th>@L["TicketRangeMax"]</th>
<th>@L["TicketCode"]</th>
<th>@L["IsDefaultQueue"]</th>
<th>@L["LastTicketId"]</th>
</tr>
</thead>
</abp-table>
and the js code from where i am assigning data
var _$tenantsTable = $('#QueuesTable');
var dataTable = _$tenantsTable.DataTable(abp.libs.datatables.normalizeConfiguration({
processing: true,
serverSide: true,
paging: true,
searching: false,
scrollX: true,
autoWidth: true,
scrollCollapse: true,
order: [[1, "asc"]],
ajax: abp.libs.datatables.createAjax(queueService.getList, getFilter),
columnDefs: dataTableColumns
}));
var dataTableColumns = [
{
rowAction: {
items:
[
{
text: l("Expand"),
visible: abp.auth.isGranted('QueuingSystem.Queues.Edit'),
action: function (data) {
debugger;
// Call the openDetailRow function with the appropriate URL
openDetailRow(this, "/Pages/TicketQueues/QueueTickets" + data.record.queue.id);
}
}
]
},
width: "1rem"
},
{ data: "queue.name" },
{ data: "queue.ticketRangeMin" },
{ data: "queue.ticketRangeMax" },
{ data: "queue.ticketCode" },
{
data: "queue.isDefaultQueue",
render: function (isDefaultQueue) {
return isDefaultQueue ? '<i class="fa fa-check"></i>' : '<i class="fa fa-times"></i>';
}
},
{ data: "queue.lastTicketId" }
];
the below code is the one i am setting to open a row below the clicked row of parent table
var currentOpenedDetailRow;
function openDetailRow(e, url) {
var tr = $(e).closest('tr');
var row = dataTable.row(tr);
alert("Checked");
if (row.child.isShown()) {
row.child.hide();
tr.removeClass('shown');
currentOpenedDetailRow = null;
} else {
if (currentOpenedDetailRow) {
currentOpenedDetailRow.child.hide();
currentOpenedDetailRow.node().classList.remove('shown');
}
$.get(url).then((data) => {
row.child(data).show();
tr.addClass('shown');
currentOpenedDetailRow = row;
}).catch((error) => {
console.error("Error loading data:", error);
});
}
}
and the js script for loading child data is below
(function () {
$(function () {
var _$InvoiceTable = $('#QueueTicketTable');
var _paymentService = window.queuingSystem.queues.queues;
var dataTable = _$InvoiceTable.DataTable({
paging: true,
serverSide: true,
processing: true,
listAction: {
ajaxFunction: _paymentService.queues.,
inputFilter: function () {
return {
tenatID: $('#QueueTicket_QueueId').val()
};
}
},
columnDefs: [
{
targets: 0,
data: 'SequenceNumber',
},
{
targets: 1,
data: 'TicketNumber',
},
],
});
});
})();