2016-06-21 15 views
1

Die Spalte meines Datatables sieht breiter aus, wenn der Wert zu lang ist.jquery datatables Umbruch funktioniert nicht

enter image description here

ich habe folgende this und this. und Einstellen der Breite:

aTable = $("#printdata").dataTable({ 
    "bAutoWidth" : false, 
    "bRetrieve" : true, 
    "scrollY": 200, 
    "scrollX": true, 
    "deferRender": true, 
    "scroller": { 
      loadingIndicator: true 
      }, 
    "bServerSide": true, 
    "bProcessing": true, 
    "sAjaxSource": 'show2ndsampling.php', 
    "fnServerData": function (sSource,aoData,fnCallback){ 
      $.ajax({ 
        "dataType":'json', 
        "type":'POST', 
        "url":sSource, 
        "data":aoData, 
        "success":function(json){ 
          fnCallback(json); 
          } 
        }); 
      }, 
    "order" : [[1,"desc"]], 
    "aoColumns" : [ 
    /*serial*/{ "width": "30%", target : 3 } 
    ] 

Aber es gibt in meiner Datentabelle keine Veränderung.

+0

Es bedeutet, dass Sie keine Leerzeichen in Ihrem Wort haben. Deshalb passiert das. – xAqweRx

+1

Der Zeilenumbruch funktioniert, wenn ein Wort Platz hat. –

+1

Bitte geben Sie Ihren vollständigen Datatables-Initialisierungscode an – Yuri

Antwort

2

ich tun würde, um dieses

table.dataTable tbody td { 
    word-break: break-word; 
    vertical-align: top; 
} 

Demo ->http://jsfiddle.net/qh63k1sg/

Dies impliziert, dass autoWidth auf false gesetzt ist und Sie haben die Spalten eine feste Breite (wie in der gegebenen Demo und wie OP beschrieben hat er mit aoColumns/columns).

+0

ja richtig ich setze 'autowidth: false'. – nunu

1

Jetzt kann ich Ihnen sagen, dass die beste Möglichkeit für die Anzeige von Daten die Änderung Ihrer Ausgabe ist.

Es bedeutet:

  1. , wenn Sie Antwort auf Basis von sql query erstellen -> Sie es optimieren sollte und einen Raum in Ihrem quesry hinzuzufügen.
  2. Wenn Sie es in der Vorlage tun -> bereiten Sie Daten auf Tempel Teil, Beispiel auf PHP
  3. Wenn Sie es auf Frontend-Teil tun, machen Sie es in JS-Weise.

PHP Art und Weise:

$result = array(/* your result */); 
foreach($result as &$answer){ 
    $answer = implode(", ", explode(",", $answer)); 
} 

JS Art und Weise:

var result = [/* your result */]; 
for(var index = 0; index < result.length; i++){ 
    result[index] = result[index].split(",").join(", "); 
} 
0

Sie dies mit CSS beheben können.

table /* give class of table*/ 
{ 
    table-layout: fixed; 
} 

table td 
{ 
    word-wrap:break-word; 
    overflow: hidden; 
}