Reputation: 1938
I use DataTables to format my tables. I also use their plugins for Buttons. I am trying to create a custom button to redirect to a different page where I'll create an Excel file for download. I'm just not sure how to set the href
. I've tried this:
$.fn.dataTable.ext.buttons.export =
{
className: 'buttons-alert',
text: "Export All Test III",
action: function (e, dt, node, config)
{
var SearchData = dt.rows({ filter: 'applied' }).data();
var OrderData = dt.order();
alert("Test Data for Searching: " + SearchData);
alert("Test Data for Ordering: " + OrderData);
},
href: './AjaxHandler.php'
};
The href
is ignored and not set. I need to set the href
.
How do I do this?
I can see in the Dev Tools in Firefox that it has the property, but it is set to # like this:
EDIT
I have since tried setting the href
after initialization like this:
$('.dt-button.buttons-alert').attr('href', './AjaxHandler.php');
document.querySelector('.buttons-alert').setAttribute('href', './AjaxHandler.php');
Neither one of these works, though, the href
still shows only the #.
Upvotes: 9
Views: 13899
Reputation: 956
This is what I did, so that the link opens in a new tab:
$("#my_table").DataTable({
"buttons": [
{
text: 'Click me',
action: function (e, dt, button, config) {
window.open("https://example.com/path/page.html");
}
}
],
"dom": 'Bfrtip', // https://datatables.net/reference/option/dom
"info": false,
// "language":
'order': [[0, 'asc'],],
"ordering": true,
"paging": false,
"searching": false,
});
Upvotes: 0
Reputation: 445
I found the answer to Mike's solution, as in his solution href is adding but link is not opening on click, so I slightly modified the code to make it work. Also, it would be helpful to some who is trying currently. Its an easy fix.
$('#myTable').DataTable({
...,
buttons: [
{
text: '<i class="fa fa-plus"></i>',
className: 'btn btn-default btnAddJob',
titleAttr: 'Add a new record',
init: function (dt, node, config) {
$(node).click(function(){
window.location.href = 'Your Link';
})
}
}
]
})
Upvotes: 1
Reputation: 275
Here is what I did to solve this issue. This puts my "Add record" button in the DataTable DOM
$('#myTable').DataTable({
...,
buttons: [
{
text: '<i class="fa fa-plus"></i>',
className: 'btn btn-default btnAddJob',
titleAttr: 'Add a new record',
init: function (dt, node, config) {
$(node).attr('href', 'put/your/href/here')
}
}
]
})
Upvotes: 4
Reputation: 1938
I've gotten it to work, sort of. I am still not able to get the href
set in the button. What I am able to do is this:
$.fn.dataTable.ext.buttons.export =
{
className: 'buttons-alert',
id: 'ExportButton',
text: "Export All Test III",
action: function (e, dt, node, config)
{
//This will send the page to the location specified
window.location.href = './AjaxHandler.php';
}
};
This accomplishes the same thing even though it does it a different way.
Upvotes: 6
Reputation: 273
dataTables doesn't have "href" in their options. Buttons only have these options that can be used: https://datatables.net/reference/option/#buttons
Upvotes: 0