jQuery datatables no mostrar la tabla, si no los datos

Estoy usando jquery datatables con el lado del servidor de captura de datos, mi problema es cuando la tabla de datos está vacía ocultar tablas de datos de la tabla y no demostrar que, quiero mostrar la tabla con ninguna de datos en la tabla de mensajes, cómo tiene esta opción?

oTable_topics =$('#showTopics').dataTable({
    "bLengthChange": false,
    "bStateSave": true,
    "iDisplayLength": 12,                               
    "bScrollCollapse": true,       
    "bJQueryUI": true,
    "bAutoWidth": false,
    "sAjaxSource": "server_processing.php",
    "sPaginationType": "full_numbers",
    "bProcessing": true,
    //"fnCreatedRow": function( nRow, aData, iDataIndex ) {
     //$('td:eq(5)', nRow).html("<ul class='styledlist' style='width:80px !important;'><img src='http://localhost/shirazee/UI/images/icons/publish.png' style='border:none;'/></ul>");
    //},
    "fnDrawCallback": function(oSettings) {
        clickRowHandler_topics();
        if ( oSettings.aiDisplay.length == 0 )
        {
            return;
        }                       
        var nTrs = $('tbody tr', oSettings.nTable);
        var iColspan = nTrs[0].getElementsByTagName('td').length;
        var sLastGroup = "";
        for ( var i=0 ; i<nTrs.length ; i++ )
        {
            var iDisplayIndex = oSettings._iDisplayStart + i;
            var sGroup = oSettings.aoData[ oSettings.aiDisplay[iDisplayIndex] ]._aData[0];
            if ( sGroup != sLastGroup )
            {
                var nGroup = document.createElement( 'tr' );
                var nCell = document.createElement( 'td' );
                nCell.colSpan = iColspan;
                nCell.className = "group";
                nCell.innerHTML = sGroup;
                nGroup.appendChild( nCell );
                nTrs[i].parentNode.insertBefore( nGroup, nTrs[i] );
                sLastGroup = sGroup;
            }
        }
    },
    "aoColumnDefs": [
        { "bVisible": false, "aTargets": [ 0 ] }
    ],
    "aaSortingFixed": [[ 0, 'asc' ]],
    "aaSorting": [[ 1, 'asc' ]],
    "fnServerParams": function ( aoData ) {
      aoData.push(
         {"name": "id"   ,      "value": "i.id" },          
         {"name": "subject"   , "value": "i.subject" },
         {"name": "date_time",  "value": "i.date_time"} ,
         {"name": "posted_by",  "value": "u.username"} ,
         {"name": "ctitle"   ,  "value": "c.title"} ,
         {"name": "etitle"   ,  "value": "e.title"},
         {"name": "istatus"   ,  "value": "i.status"},
         {"name": "join"     ,  "value": "JOIN categories c ON i.category = c.id JOIN status_topics e ON i.status = e.id JOIN users u ON i.posted_by = c.id"},
         {"name": "action"   ,  "value": "topics" }
      )}
    });
    function clickRowHandler_topics() {
        $('#showTopics tbody tr').bind('click', function () {
            var aData = oTable_topics.fnGetData( this );
            iId_topics = aData[1];
        });
    }

OriginalEl autor | 2013-05-27

5 respuestas

  1. 9

    Para alternar la visibilidad de tabla, dependiendo del número de resultado, simplemente utilice la propiedad fnDrawCallback:

    var _grid = $("#myTable").dataTable({
        fnDrawCallback: function (settings) {
            $("#myTable").parent().toggle(settings.fnRecordsDisplay() > 0);
        }
    });
    hiiii estoy en este código, pero si la tabla de datos a continuación, también no mostrar la tabla y estoy clase de uso no id de la tabla porque no de la tabla de crear dinámicas alguna idea?

    OriginalEl autor Johann

  2. 2

    Usted puede hacer como

    $('#showTopics').dataTable( {
        "oLanguage": {
            "sEmptyTable" : "Your custom message for empty table"
        }
    } );

    Sólo tiene que añadir esta

    "oLanguage": {
        "sEmptyTable" : "Your custom message for empty table"
    }
    gracias, pero mi tabla es ocultar ahora, que no los datos en la tabla para mostrar.
    Esto es para una mesa vacía, usted puede mostrar su mensaje cuando no hay datos.
    sí Sheikh Heera mi problema es este. tabla de ocultar y no puedo mostrar. yo, usando el lado del servidor de la propiedad
    Estoy confundido! Utilice el lado del servidor de la propiedad, ¿qué significa eso ? Es la tabla que está oculto desde el servidor usando el display:none de la propiedad cuando no hay datos ?
    O si necesita agregar una fila vacía, a continuación, puede agregar una fila como $('#showTopics').show().dataTable().fnAddData( ['&nbsp;', '&nbsp;'] ), agregar la cantidad de &nbsp; cantidad de columnas que tiene.

    OriginalEl autor The Alpha

  3. 0

    Creo que lo que quieres decir es que si la tabla está vacía de todos los datos no muestran ninguna datatable. Eso no es algo que usted puede hacer en su mesa init directamente.

    Lo que tendríamos que hacer es poner a prueba la salida de su “sAjaxSource”: “server_processing.php” y a ver si es vacío:

    $.getJSON( "server_processing.php", function( data ) {
        if( this = "" || NULL ) {
            //add css hidden classes to all datatables elements
            $("#showTopics").addClass("hidden");
            $(".your-th-and-thead-classes").addClass("hidden");
        }
    }

    Luego en el CSS puede hacer:

    .hidden {
        display: none;
    }

    OriginalEl autor DrewT

  4. 0

    Tablas de datos proporciona una devolución de llamada que se activa cuando la tabla de cargas (por ejemplo, cuando el servidor-lado de la llamada completa.) Usted puede poner código arbitrario allí para modificar la tabla como más te guste.

    Por ejemplo, para ocultar su tabla de carga:

    var myTable = $("#my_table");
    myTable.dataTable({
    
        "fnInitComplete": function(oSettings, json) {
            myTable.hide();
        }
    });

    OriginalEl autor rogueleaderr

  5. -1
    var myTable = $("#my_table");
    myTable.dataTable({
            "fnInitComplete": function(oSettings) {
               if (oSettings.aiDisplayMaster.length <= 0) {
                   $("#my_table_wrapper").hide();
               }
            }
    });

    Edición(añadir una descripción): se basa en evento doc y ajuste doc vemos que la DisplayMaster contener el número de elementos en la tabla y basada en HTML render, la tabla global div con class = “tabla de la clase”+ _wrapper” con la configuración predeterminada. así que si no tenemos elementos que ocultar este div.

    tal vez esta no es la mejor solución, pero es un trabajo.

    puedo añadir explicación, pero @TobySpeight meta.stackexchange.com/a/114776 (“una vez más, a menudo un corto fragmento de código es todo lo que se necesita. He visto algunas de las respuestas que se fue y con explicaciones de cosas que no importa tanto…”) . como esta pregunta.

    OriginalEl autor Mezrani ISMAIL

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *