He creado este violín y funciona muy bien por mis requisitos: El violín

Sin embargo, cuando uso el mismo, en mi aplicación me da un error en el navegador de la consola diciendo No se puede leer la propiedad «aDataSort’ undefined

En mi aplicación, el código javascript se lee algo como la siguiente: he comprobado la salida del controlador…funciona bien, y se imprime en la consola también.

$(document).ready(function() {

    $.getJSON("three.htm", function(data) {
             //console.log("loadDataTable >>  "+JSON.stringify(data));
             })
             .fail(function( jqxhr, textStatus, error ) {
             var err = textStatus + ', ' + error;
             alert(err);
             console.log( "Request Failed: " + err);
             })
             .success(function(data){
                 loadDataTable(data);
             });

    function loadDataTable(data){
         $("#recentSubscribers").dataTable().fnDestroy();    
         var oTable = $('#recentSubscribers').dataTable({
             "aaData" : JSON.parse(data.subscribers),
             "processing": true,
            "bPaginate": false,
            "bFilter": false,
            "bSort": false,
            "bInfo": false,
            "aoColumnDefs": [{
            "sTitle": "Subscriber ID",
            "aTargets": [0]
        }, {
            "sTitle": "Install Location",
            "aTargets": [1]
        }, {
            "sTitle": "Subscriber Name",
            "aTargets": [2]
        }, {
            "aTargets": [0], 
            "mRender": function (data, type, full) {
                return '<a style="text-decoration:none;" href="#" class="abc">' + data + '</a>';
            }
        }],
            "aoColumns": [{
            "mData": "code"
        }, {
            "mData": "acctNum"
        }, {
            "mData": "name"
        }]
            });

    }       

})
  • Por favor, asegúrese de que el código que se incluye es el mismo que el violín (no) y el que se está ejecutando. También en el violín tiene dos aTargets[0], ver en: jsfiddle.net/gL0p0t42
  • No se proporciona la fuente que en realidad la llamada «aDataSort».
  • Qué quiere decir el id de la tabla html? He tenido cuidado de que. Permítanme tratar con el hecho de tener un objetivo.
  • la fuente es el parámetro para la loadDataTable() función.
  • este no es el trabajo lo que usted sugiere. Puse el aTargets[0] en un solo lugar..pero el error persiste.
  • relacionados con el (la más reciente) pregunta con la respuesta
  • Yo tenía el mismo problema , y me parece que a fin de por un número de columna que no existe.. yo solo tenía 3 cols, pero pedí por la quinta .

InformationsquelleAutor swateek | 2015-02-11

6 Comentarios

  1. 115

    Es importante que el THEAD no se vacía en la mesa.Como dataTable requiere especificar el número de columnas de los datos esperados .
    Según sus datos debe ser

    <table id="datatable">
        <thead>
            <tr>
                <th>Subscriber ID</th>
                <th>Install Location</th>
                <th>Subscriber Name</th>
                <th>some data</th>
            </tr>
        </thead>
    </table>
    • ¿Qué pasa si tengo un requisito que implica la configuración de columnas y el número de las citadas columnas en tiempo de ejecución? ¿Cómo puedo implementar código para el mencionado requisito?
    • Esto me ayudó a curar mi problema de los datos no se imprimen. Así que también me ayudó a curar un problema más que de la mía para datatable donde escribí "Sort":false, entonces era capaz de ver la lista en orden descendente que venía de controlador como Model.OrderByDescending(x=>x.Action==0).ThenBy(x=>x.Action).
    • Yo no puedo upvote más de una vez, de lo contrario me habría!!
    • el <thead> debe contener un <tr> , entonces <th>s
    • Que la punta trabajado para mí, sino para el <tfoot> etiqueta
  2. 47

    También tenía este problema,
    Esta matriz fue fuera de rango:

    order: [1, 'asc'],
    • Esto siempre me pone. Hay una forma predeterminada de la matriz a 0, si la matriz es de rango?
    • Se puede establecer como un array vacío: orden: []
    • Mina de columnas donde 5 y se me fue la especificación de 7 aquí ! Gracias
  3. 6

    Para mí, el error fue en tablas de datos en sí; El código de la clasificación en tablas de datos 1.10.9 no verificación de límites; por lo tanto, si usas algo como

    order: [[1, 'asc']]

    con una tabla vacía, no hay ninguna fila idx 1 -> esta excepción asegura.
    Esto sucedió mientras los datos de la tabla se ha obtenido de forma asincrónica. Inicialmente, en la página de carga de la tabla de datos se inicializa sin datos. Debe ser actualizado más tarde, tan pronto como el resultado de los datos se recuperan.

    Mi solución:

    //add within function _fnStringToCss( s ) in datatables.js
    //directly after this line
    //srcCol = nestedSort[i][0];
    
    if(srcCol >= aoColumns.length) {
        continue;
    }
    
    //this line follows:
    //aDataSort = aoColumns[ srcCol ].aDataSort;
  4. 4

    En mi caso he tenido

    $(`#my_table`).empty();

    Donde debería de haber sido

    $(`#my_table tbody`).empty();

    Nota: en mi caso tuve que vaciar la tabla ya que yo había datos que quería ido antes de insertar nuevos datos.

    Sólo pensado en compartir donde «podría» ayudar a alguien en el futuro!

  5. 1

    también tengo este problema ,los siguientes cambios resuelto mi problema .

    $(document).ready(function() {
         $('.datatable').dataTable( {
                bSort: false,
                aoColumns: [ { sWidth: "45%" }, { sWidth: "45%" }, { sWidth: "10%", bSearchable: false, bSortable: false } ],
            "scrollY":        "200px",
            "scrollCollapse": true,
            "info":           true,
            "paging":         true
        } );
    } );

    la aoColumns matriz describe el ancho de cada columna y su sortable propiedades.

  6. 1

    He tenido este problema y era porque otro script fue la eliminación de todas las tablas y recrearlos, pero mi mesa no estaba siendo recreado. Pasé las edades sobre este tema antes de que me di cuenta de que mi mesa no era visible incluso en la página. Se puede ver la tabla antes de inicializar las tablas de datos?

    Esencialmente, el otro script estaba haciendo:

    let tables = $("table");
    for (let i = 0; i < tables.length; i++) {
      const table = tables[i];
      if ($.fn.DataTable.isDataTable(table)) {
        $(table).DataTable().destroy(remove);
        $(table).empty();
      }
    }

    Y que debería estar haciendo:

    let tables = $("table.some-class-only");
    ... the rest ...

Dejar respuesta

Please enter your comment!
Please enter your name here