J'utilise le plugin jQuery DataTables et Bootstrap sur mon site Rails. Je ne parviens pas à imbriquer mon bouton personnalisé et d'autres éléments d'en-tête de tableau dans la même ligne. Ils sont empilés au lieu d'être en ligne.
Des suggestions pour les mettre tous sur la même ligne?
Voici quelques exemples de JavaScript que j'ai utilisés:
$(document).ready(function() {
$('#products').DataTable( {
dom: 'Blfrtip',
buttons: [ {
text: 'Pull my products',
action: function ( e, dt, node, config ) {
alert( 'Button activated' );
}
}]
});
});
C’est la partie la plus déroutante avec l’utilisation du style Bootstrap pour jQuery DataTables et elle n’a pas encore été documentée. L'extension Bootstrap remplace la valeur par défaut dom
, qui peut être confirmée en affichant son code source .
Vous devez utiliser une option spécialement conçue dom
similaire à celle illustrée ci-dessous:
dom:
"<'row'<'col-sm-3'l><'col-sm-6 text-center'B><'col-sm-3'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
Vous pouvez être aussi créatif que vous le souhaitez en utilisant les classes Bootstrap row
et col-*
dans l'option dom
.
Voir this jsFiddle pour le code et la démonstration.
Vous pouvez également utiliser la méthode d'insertion directe comme indiqué dans cet exemple car l'option par défaut dom
utilisée pour le style Bootstrap est assez complexe.
var table = $('#example').DataTable({
initComplete: function(){
var api = this.api();
new $.fn.dataTable.Buttons(api, {
buttons: [
{
text: 'Pull my products',
action: function ( e, dt, node, config ) {
alert( 'Button activated' );
}
}
]
});
api.buttons().container().appendTo( '#' + api.table().container().id + ' .col-sm-6:eq(0)' );
}
});
Notez que le code diffère de l'exemple cité ci-dessus car il existe un issue avec DataTables 1.10.9 empêchant l'insertion directe de boutons s'il n'y a pas de caractère B
dans l'option dom
ou l'option dom
n'est pas spécifié.
Voir this jsFiddle pour le code et la démonstration.
Vous devez mettre deux divs: un pour les boutons datatable et l'autre pour votre code personnalisé
var table = $("#tbl_oferta").dataTable({
dom: '<"pime-grid-button"B><"pime-grid-filter">frtip',
...
});
$("div.pime-grid-filter").html('<b>Custom tool bar! Text/images etc.</b>');
Puis définissez div class dans votre css:
.pime-grid-button{float:left}
.pime-grid-filter{float:left;margin-left:10px}