2012-07-10 17 views
8

Estoy siguiendo the example here. Usando una matriz que contiene un objeto.Jquery datatables que no muestran los encabezados de las columnas

Creo mi matriz en un bucle como este

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

Mi aplicación tabla de datos:

$(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"] 
     } 
    }); 
}); 

estoy recibiendo los datos correctamente, pero sin títulos de las columnas, me estoy perdiendo algo?

Respuesta

4

intenta cambiar su elemento <table> así:

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

De esa manera los encabezados se crean. Si hace clic en Ver fuente en la página de ejemplo, verá la misma implementación.

+0

oh, pensaron que sería tirar dinámicamente .. de todas formas esto funcionó :) aplausos –

+0

@VinceLowe Creo que depende de cómo se estructure los datos. He usado Datatables extensivamente y tuve columnas que aparecen dinámicamente de vez en cuando. Por ejemplo, si usa gridview (C#) y luego le aplica datatables, tomará los encabezados de gridview. Además, si especifica sus propios encabezados, puede agregar filtros (como menús desplegables o cuadros de texto). – Drakkainen

+0

He codificado como en el caso anterior, pero me parece que no debería tener que deletrear los encabezados en el html ... estoy publicando [esto re: generando dinámicamente encabezados] (http://alanhollis.com/datatables-net- dynamic-column-headings-ajax-request /) con la esperanza de ayudar a alguien o hacer que funcione en algún momento ... – bahmait

28

Si va a ceder en los datos en forma de una matriz de objetos, a continuación, tendrá que especificar los títulos de cada columna de forma manual:

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

Nota: esto no requerir para especificar encabezados en su elemento table. Todo lo que necesita es un <table> vacío, y esto funcionará. Documentación here.

+2

Esta debería ser la respuesta correcta. Parece que se adapta a todos los escenarios. – Veverke

+2

gracias, me pregunto por qué esto no se menciona para el ejemplo particular en la documentación de tablas de datos? He pasado 30 minutos tratando de arreglarlo leyendo los documentos hasta que llegue su respuesta – george

+0

¡Muchas gracias! Estaba revisando la documentación de tablas de datos para esto, pero no pude encontrarlo. – lonesword

1

A continuación va a crear dinámicamente cabeceras

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