J'ai une table de données jQuery (indiquée en rouge), mais ce qui se passe, c'est que la table saute hors de la largeur que j'ai définie pour le div (qui est de 650 px).
Voici la capture d'écran:
Voici mon code:
<script type="text/javascript">
var ratesandcharges1;
$(document).ready(function() {
/* Init the table*/
$("#ratesandcharges1").dataTable({
"bRetrieve": false,
"bFilter": false,
"bSortClasses": false,
"bLengthChange": false,
"bPaginate": false,
"bInfo": false,
"bJQueryUI": true,
"bAutoWidth": false,
"aaSorting": [[2, "desc"]],
"aoColumns": [
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '9%' },
{ sWidth: '10%' } ]
});
ratesandcharges1.fnDraw();
});
</script>
<div id="ratesandcharges1Div" style="width: 650px;">
<table id="ratesandcharges1" class="grid" >
<thead>
<!--Header row-->
<tr>
<th>Charge Code</th>
<th>Rates</th>
<th>Quantity</th>
<th>Total Charge</th>
<th>VAT %</th>
<th>Calc. Type</th>
<th>Paid By</th>
<th>From</th>
<th>To</th>
<th>VAT</th>
<th>MVGB</th>
</tr>
</thead>
<!--Data row-->
<tbody>
<tr>
<td>Day/Tag</td>
<td>55.00</td>
<td>3.00</td>
<td>165.00</td>
<td>20.00</td>
<td>Rental Time</td>
<td>Bill-to/Agent</td>
<td>5/11/2010</td>
<td>08/11/2010</td>
<td>33.00</td>
<td>1.98</td>
</tr>
<tr>
<td>PAI</td>
<td>7.50</td>
<td>3.00</td>
<td>22.50</td>
<td>20.00</td>
<td>Rental Time</td>
<td>Driver/Cust.</td>
<td>5/11/2010</td>
<td>08/11/2010</td>
<td>4.50</td>
<td>0.00</td>
</tr>
<tr>
<td>BCDW</td>
<td>15.00</td>
<td>3.00</td>
<td>45.00</td>
<td>20.00</td>
<td>Rental Time</td>
<td>Driver/Cust.</td>
<td>5/11/2010</td>
<td>08/11/2010</td>
<td>9.00</td>
<td>0.54</td>
</tr>
<tr>
<td>BTP</td>
<td>7.15</td>
<td>3.00</td>
<td>21.45</td>
<td>20.00</td>
<td>Rental Time</td>
<td>Driver/Cust.</td>
<td>5/11/2010</td>
<td>08/11/2010</td>
<td>4.29</td>
<td>0.26</td>
</tr>
</tbody>
</table>
</div>
Des idées ?
Merci
Essayez de définir la largeur sur la table elle-même:
<table id="ratesandcharges1" class="grid" style="width: 650px;">
Vous devrez ajuster le 650 de quelques pixels pour tenir compte du rembourrage, des marges et des bordures que vous avez.
Vous aurez probablement encore quelques problèmes. Je ne vois pas assez d'espace horizontal pour toutes ces colonnes sans modifier les en-têtes, réduire les tailles de police ou un autre peu de laideur.
J'ai trouvé ça au 456 Bera St. Man est-ce une bouée de sauvetage !!!
http://www.456bereastreet.com/archive/200704/how_to_prevent_html_tables_from_becoming_too_wide/
Mais - vous n'avez pas beaucoup de place à consacrer à vos données.
CSS FTW:
<style>
table {
table-layout:fixed;
}
td{
overflow:hidden;
text-overflow: Ellipsis;
}
</style>
Options de configuration:
$(document).ready(function () {
$("#companiesTable").dataTable({
"sPaginationType": "full_numbers",
"bJQueryUI": true,
"bAutoWidth": false, // Disable the auto width calculation
"aoColumns": [
{ "sWidth": "30%" }, // 1st column width
{ "sWidth": "30%" }, // 2nd column width
{ "sWidth": "40%" } // 3rd column width and so on
]
});
});
Spécifiez le css pour la table:
table.display {
margin: 0 auto;
width: 100%;
clear: both;
border-collapse: collapse;
table-layout: fixed; // add this
Word-wrap:break-Word; // add this
}
HTML:
<table id="companiesTable" class="display">
<thead>
<tr>
<th>Company name</th>
<th>Address</th>
<th>Town</th>
</tr>
</thead>
<tbody>
<% for(Company c: DataRepository.GetCompanies()){ %>
<tr>
<td><%=c.getName()%></td>
<td><%=c.getAddress()%></td>
<td><%=c.getTown()%></td>
</tr>
<% } %>
</tbody>
</table>
Ça marche pour moi!
Réponse du site officiel
https://datatables.net/reference/option/columns.width
$('#example').dataTable({
"columnDefs": [
{
"width": "20%",
"targets": 0
}
]
});
La meilleure solution, j'ai trouvé que cela fonctionnait pour moi les gars après avoir essayé toutes les autres solutions .... Fondamentalement, j'ai défini le sScrollX à 200%, puis défini les largeurs de colonne individuelles au% requis que je voulais. Plus vous avez de colonnes et plus d'espace dont vous avez besoin, vous devez augmenter le sScrollX% ... La valeur null signifie que je veux que ces colonnes conservent la largeur automatique des tables de données qu'elles ont définie dans leur code.
$('#datatables').dataTable
({
"sScrollX": "200%", //This is what made my columns increase in size.
"bScrollCollapse": true,
"sScrollY": "320px",
"bAutoWidth": false,
"aoColumns": [
{ "sWidth": "10%" }, // 1st column width
{ "sWidth": "null" }, // 2nd column width
{ "sWidth": "null" }, // 3rd column width
{ "sWidth": "null" }, // 4th column width
{ "sWidth": "40%" }, // 5th column width
{ "sWidth": "null" }, // 6th column width
{ "sWidth": "null" }, // 7th column width
{ "sWidth": "10%" }, // 8th column width
{ "sWidth": "10%" }, // 9th column width
{ "sWidth": "40%" }, // 10th column width
{ "sWidth": "null" } // 11th column width
],
"bPaginate": true,
"sDom": '<"H"TCfr>t<"F"ip>',
"oTableTools":
{
"aButtons": [ "copy", "csv", "print", "xls", "pdf" ],
"sSwfPath": "copy_cvs_xls_pdf.swf"
},
"sPaginationType":"full_numbers",
"aaSorting":[[0, "desc"]],
"bJQueryUI":true
});
Dans Java calcule la largeur en utilisant le code suivant
var scrollX = $(window).width()*58/100;
var oTable = $('#reqAllRequestsTable').dataTable({
"sScrollX": scrollX
} );
en utilisant css, nous pouvons facilement ajouter de la largeur à la colonne.
ici, j'ajoute la première largeur de colonne à 300 px sur l'en-tête (la tête)
::ng-deep table thead tr:last-child th:nth-child(1) {
width: 300px!important;
}
ajoutez maintenant la même largeur à la première colonne du corps par,
<table datatable class="display table ">
<thead>
<tr>
<th class="text-left" style="width: 300px!important;">name</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-left" style="width: 300px!important;">jhon mathew</td>
</tr>
</tbody>
</table>
de cette façon, vous pouvez facilement changer la largeur en changeant l'ordre du nième enfant. si vous voulez 3 colonnes, ajoutez nth-child (3)