2012-07-10 16 views
8

Podążam za the example here. Używanie tablicy zawierającej obiekt.Datacables Jquery bez nagłówków kolumn

tworzę tablicę w pętli for jak ten

historyArray[i] = { 
    "User": strUserName, 
    "Timestamp" : date.toString(), 
    "Latitude" : point.lat, 
    "Longitude" : point.lng 
}; 

My elementu datatable realizacji:

$(document).ready(function() { 
    $('#dynamic').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="report"></table>'); 
    $('#report').dataTable({ 
     "aaData": historyArray, 
     "aoColumns": [ 
      { "mDataProp": "User" }, 
      { "mDataProp": "Timestamp" }, 
      { "mDataProp": "Latitude" }, 
      { "mDataProp": "Longitude" } 
     ], 
     "bJQueryUI": true, 
     "sPaginationType": "full_numbers", 
     "sDom": '<"H"Tfr>t<"F"ip>', 
     "oTableTools": { 
      "sSwfPath": "swf/copy_csv_xls_pdf.swf", 
      "aButtons": ["copy", "csv", "xls", "pdf"] 
     } 
    }); 
}); 

Dostaję dane poprawnie, ale bez nagłówków kolumn, jestem brakuje czegoś?

Odpowiedz

4

Spróbuj zmienić elementu <table> tak:

<table id=report> 
    <thead> 
     <tr> 
      <th>Header 1</th> 
      <th>Header 2</th> 
     </tr> 
    </thead> 
</table> 

W ten sposób tworzone są nagłówki. Jeśli klikniesz opcję wyświetl źródło na przykładowej stronie, zobaczysz tę samą implementację.

+0

oh, myślałem, że to ciągnąć dynamicznie .. i tak to działało :) okrzyki –

+0

@VinceLowe myślę, że to zależy od tego, w jaki sposób dane są skonstruowane. Wielokrotnie korzystałem z Datatables i od czasu do czasu pojawiały się kolumny dynamicznie. Na przykład, jeśli użyjesz gridview (C#), a następnie zastosujesz do niego elementy danych, zajmie to nagłówek z gridview. Ponadto, jeśli określisz własne nagłówki, możesz dodać filtry (takie jak rozwijane lub pola tekstowe). – Drakkainen

+0

Napisałem na sztywno, jak wyżej, ale wydaje mi się, że nie powinieneś zapisywać nagłówków w html ... am posting [to re: dynamicznie generujące nagłówki] (http://alanhollis.com/datatables-net- dynamic-column-headings-ajax-request /) w nadziei, że pomogę komuś lub sprawię, że zadziała w pewnym momencie ... – bahmait

28

Jeśli przekazując dane w postaci tablicy obiektów, a następnie trzeba podać tytuły każdej kolumny ręcznie:

data = this.SearchController.resultSet; 
this.$tableContainer.dataTable({ 
    data: data, 
    columns: [ 
    { 
     data: "H", 
     title: "Thickness" 
    }, 
    { 
     data: "InstanceId", 
     title: "Instance ID" 
    }] 
}); 

UWAGA: To będzie wymagać nie możesz określić nagłówki w swoim table elemencie. Wszystko czego potrzebujesz to pusty <table>, a to zadziała. Dokumentacja here.

+2

To powinna być poprawna odpowiedź. Wygląda na to, że pasuje do wszystkich scenariuszy. – Veverke

+2

dziękuję, zastanawiam się, dlaczego nie jest to wymienione dla konkretnego przykładu w dokumentacji danych? Spędziłem 30 minut, próbując to naprawić, czytając dokumenty, aż dotarłem do twojej odpowiedzi. – george

+0

Dziękuję bardzo! Przetrząsałem dokumentację dotyczącą danych, ale nie mogłem jej znaleźć. – lonesword

1

Poniżej Tworzenie nagłówków dynamicznie

$('#dtableid').DataTable({ 
    "aaData": [ 
    { 
     "abc": "123", 
     "xyz": 456 
    }, 
    { 
     "abc": "123", 
     "xyz": 456 
    } 
    ], 
    "aoColumns": [ 
    { 
     "mData": "abc", 
     "title": "ABC", 
     "bSortable": true 
    }, 
    { 
     "mData": "xyz", 
     "title": "XYZ", 
     "bSortable": true 
    } 
    ] 
}); 
Powiązane problemy