Вы можете использовать параметр full
функции DataTables render
, чтобы сохранить значения текущей выбранной строки. Таким образом:
return '<button type="button" class="btnClick sellbtn" data-status="' + btoa(JSON.stringify(full)) + '">Submit</button>';
В приведенном выше коде атрибут данных data-status
будет содержать строковую версию текущего значения объекта в base64 с помощью btoa()
. В base64, потому что по какой-то причине мы не можем напрямую сохранить строковую версию объекта в атрибуте данных кнопки.
Затем в событии нажатия кнопки необходимо выполнить:
- Расшифруйте строковый объект, используя
atob()
. - Разбор в объект с помощью
JSON.parse()
.
Примерно так:
$(document).on('click', '.btnClick', function() {
var statusVal = $(this).data("status");
// Decode the stringified object.
statusVal = atob(statusVal);
// Parse into object.
statusVal = JSON.parse(statusVal);
// This object contains the data of the selected row through the button.
console.log(statusVal);
return false;
});
Затем, когда вы нажмете на кнопку, вы увидите это:
![enter image description here](https://i.stack.imgur.com/xlgV2.png)
Итак Теперь вы можете использовать этот объект для отправки в callAJAX()
функции.
См. в этом примере:
$(function() {
$(document).on('click', '.btnClick', function() {
var statusVal = $(this).data("status");
// Decode the stringified object.
statusVal = atob(statusVal);
// Parse into object.
statusVal = JSON.parse(statusVal);
// This object contains the data of the selected row through the button.
console.log(statusVal);
return false;
});
let dataSet = [{
"id": 1,
"item": "Item 1",
"price": 223.22
},
{
"id": 2,
"item": "Item 2",
"price": 243.22
},
{
"id": 3,
"item": "Item 3",
"price": 143.43
},
];
let orderstable = $('#myTable').DataTable({
"data": dataSet,
"columns": [{
"data": "item"
}, {
"data": "price"
}, {
"data": "id"
}, ],
"columnDefs": [{
"targets": [2],
"searchable": false,
"orderable": false,
"render": function(data, type, full) {
// Encode the stringified object into base64.
return '<button type="button" class="btnClick sellbtn" data-status="' + btoa(JSON.stringify(full)) + '">Submit</button>';
}
}]
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<link href="//cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css" rel="stylesheet" />
<table id="myTable" class="display" width="100%"></table>
Надеюсь, это поможет!