xxxxxxxxxx
1
<div class="card m-3">
2
<div class="card-body">
3
<div id="datatable-custom"></div>
4
</div>
5
</div>
6
7
1
1
xxxxxxxxxx
1
const customDatatable = document.getElementById('datatable-custom');
2
3
const setActions = () => {
4
document.getElementsByClassName('call-btn').forEach(btn => {
5
btn.addEventListener('click', () => {
6
console.log(`call ${btn.attributes['data-mdb-number'].value}`)
7
})
8
})
9
10
document.getElementsByClassName('message-btn').forEach(btn => {
11
btn.addEventListener('click', () => {
12
console.log(`send a message to ${btn.attributes['data-mdb-email'].value}`)
13
})
14
})
15
}
16
17
customDatatable.addEventListener('render.mdb.datatable', setActions);
18
19
new mdb.Datatable(customDatatable, {
20
columns: [
21
{ label: 'Name', field: 'name' },
22
{ label: 'Position', field: 'position' },
23
{ label: 'Office', field: 'office' },
24
{ label: 'Salary', field: 'salary' },
25
{ label: 'Contact', field: 'contact', sort: false },
26
],
27
rows: [
28
{
29
name: 'Tiger Nixon',
30
position: 'System Architect',
31
office: 'Edinburgh',
32
phone: '+48000000000',
33
email: 'tiger.nixon@gmail.com',
34
salary: 120000
35
},
36
{
37
name: 'Sonya Frost',
38
position: 'Software Engineer',
39
office: 'Edinburgh',
40
phone: '+53456123456',
41
email: 'sfrost@gmail.com',
42
salary: 80000
43
},
44
{
45
name: 'Tatyana Fitzpatrick',
46
position: 'Regional Director',
47
office: 'London',
48
phone: '+42123432456',
49
email: 'tfitz@gmail.com',
50
salary: 135000
51
},
52
{
53
name: 'John Doe',
54
position: 'Unknown',
55
office: 'London',
56
phone: '+42352552',
57
email: 'jdoe@gmail.com',
58
salary: 65000
59
},
60
].map((row) => {
61
return {
62
...row,
63
contact: `
64
<button class="call-btn btn btn-primary btn-lg " data-mdb-number="${row.phone}"><i class="fa fa-phone"></i></button>
65
<button class="message-btn btn ms-2 btn-warning btn-lg" data-mdb-email="${row.email}"><i class="fa fa-envelope"></i></button>`,
66
};
67
}),
68
}, { hover: true });
Console errors: 0