Pregunta sobre tabletools, jquery, javascript, jquery-datatables – Cómo usar un enlace en TableTools en lugar de botones flash

6

Estoy tratando de encontrar una manera de cambiar los botones en TableTools. Me gustaría usar mis propios enlaces personalizados en lugar de los botones flash. ¿Hay alguna manera de que pueda hacer eso? Cualquier buen recurso que me enseñe cómo realizar esa modificación y que aún pueda utilizar las funciones, como la colección de botones, etc.

Tu respuesta

2   la respuesta
0

Sí, es posible anular los botones existentes, por ejemplo, PDF / CSV, etc. o crear nuevos botones personalizados que tengan enlaces a una URL para obtener o publicar datos. Aquí, estoy mostrando 2 métodos con métodos de obtención:

Para obtener más información sobre los métodos de obtención y publicación:

Visitar:Sobresalidas del método de descarga GET / POST de Tabletools que se pueden especificar

El código generado por el pdf se usa porque la salida del pdf de tabletools en una tabla que tiene filas agrupadas por algunos datos de la columna se superpone.

Primero en anular la función PDF y

Segundo para crear un botón personalizado.

1. Anule la función PDF para recuperar el pdf del código del servidor.

<code>/*Get Method table Tools - PDF - Overriding*/

    TableTools.BUTTONS.pdf = {
        "sAction": "text",
        "sTag": "default",
        "sFieldBoundary": "",
        "sFieldSeperator": "\t",
        "sNewLine": "<br>",
        "sToolTip": "",
        "sButtonClass": "DTTT_button_text",
        "sButtonClassHover": "DTTT_button_text_hover",
        //"sButtonText": "PDF",
        "mColumns": "all",
        "bHeader": true,
        "bFooter": true,
        "sDiv": "",
        "fnMouseover": null,
        "fnMouseout": null,
        "fnClick": function (nButton, oConfig) {
            var oParams = this.s.dt.oApi._fnAjaxParameters(this.s.dt);
            var iframe = document.createElement('iframe');
            iframe.style.height = "0px";
            iframe.style.width = "0px";
            //iframe.src = oConfig.sUrl + "?" + $.param(oParams);
            iframe.src = oConfig.sUrl;//This is the URl you give in datatable Tabletools pdf override below
            document.body.appendChild(iframe);
        },
        "fnSelect": null,
        "fnComplete": null,
        "fnInit": null
    };

    /**/


/*Datatable initialisation*/
$(document).ready(function () {

oTable = $('#alternatecolor').dataTable({
            "bJQueryUI": true,
            "aLengthMenu": [
            [10, 25, 50, 100, -1],
            [10, 25, 50, 100, "All"]
            ],
            "sPaginationType": "full_numbers",
            "aoColumns": [
            null,
            null,
            null,
            null,
            null],
            "bLengthChange": false, "bPaginate": false,
            "sDom": '<"H"Tfr>t<"F"ip>',
            //"sDom": 'T<"clear">lfrtip',
            "oTableTools": {
                "aButtons": [
              "csv", "xls",
              {
               /*PDF Override*/
              "sExtends": "pdf",
              "sButtonText": "PDF",
               //Custom url to fetch pdf report
              "sUrl": " report/PDFReportUsers/us/1"
          }
            ]
            }
        })
        /*Row grouping - optional*/
                .rowGrouping({ bExpandableGrouping: true,
                    bExpandSingleGroup: false,
                    iExpandGroupOffset: -1
                    //asExpandedGroups: [name]
                });

        /**/
    });  
});
</code>

2. Botón personalizado para obtener pdf desde el código del servidor.

<code>        /*Get Method table Tools - Download custom button*/

        TableTools.BUTTONS.download= {
            "sAction": "text",
            "sTag": "default",
            "sFieldBoundary": "",
            "sFieldSeperator": "\t",
            "sNewLine": "<br>",
            "sToolTip": "",
            "sButtonClass": "DTTT_button_text",
            "sButtonClassHover": "DTTT_button_text_hover",
            //"sButtonText": "PDF",
            "mColumns": "all",
            "bHeader": true,
            "bFooter": true,
            "sDiv": "",
            "fnMouseover": null,
            "fnMouseout": null,
            "fnClick": function (nButton, oConfig) {
                var oParams = this.s.dt.oApi._fnAjaxParameters(this.s.dt);
                var iframe = document.createElement('iframe');
                iframe.style.height = "0px";
                iframe.style.width = "0px";
                //iframe.src = oConfig.sUrl + "?" + $.param(oParams);
                iframe.src = oConfig.sUrl;
                document.body.appendChild(iframe);
            },
            "fnSelect": null,
            "fnComplete": null,
            "fnInit": null
        };

        /**/
$(document).ready(function () {

        oTable = $('#alternatecolor').dataTable({
            "bJQueryUI": true,
            "aLengthMenu": [
            [10, 25, 50, 100, -1],
            [10, 25, 50, 100, "All"]
            ],
            "sPaginationType": "full_numbers",
            "aoColumns": [
            null,
            null,
            null,
            null,
            null],
            "bLengthChange": false, "bPaginate": false,
            "sDom": '<"H"Tfr>t<"F"ip>',
            //"sDom": 'T<"clear">lfrtip',
            "oTableTools": {
                "aButtons": [
              "csv", "xls"
                         , {
                              "sExtends": "download",
                              "sButtonText": "Download PDF",
                              "sUrl":     "admin/user/4/downloadfile"
                          }
            ]
            }
        })
        /*Row grouping - optional */
                .rowGrouping({ bExpandableGrouping: true,
                    bExpandSingleGroup: false,
                    iExpandGroupOffset: -1
                    //asExpandedGroups: [name]
                });

        /**/
    });  
</code>
Si has hecho algún experimento en esto Suganthan Madhavan Pillai
Este código es el mismo que el de su sitio web dataTable, está bien, está bien ... una ayuda cuando está generando un archivo pdf aquí, parece que está creando un mismo iframe Suganthan Madhavan Pillai
@Suganthan, lo he usado en muchos lugares del proyecto. T Gupta
@Suganthan, he estado usando una url que devuelve el archivo pdf como flujo al navegador del usuario. Para especificar la url del generador de pdf: "sUrl": "admin / user / 4 / downloadfile" DataTable carga la url mediante: iframe.src = oConfig.sUrl; T Gupta
4

Según el creador., la única forma de obtener la funcionalidad de exportación de TableTools es mediante los botones de Flash.

Los otros subprocesos que encontró deberían decir que actualmente, no, esta no es una opción que TableTools proporciona. La opción Flash se usa para proporcionar la capacidad de navegador / plataforma para guardar archivos completamente en el lado del cliente, esa opción simplemente no está disponible en los navegadores más antiguos (IE6, IE7, etc.) donde no hay soporte para el protocolo de datos: // y las opciones de interacción del sistema de archivos locales.

Seguramente sería posible agregar esta habilidad a TableTools, pero me temo que aún no he tenido la oportunidad de hacerlo. Está en la hoja de ruta sin embargo.

Alano

Si está interesado en crear el lado del servidor de archivos de exportación, puede considerarel complemento de descarga (GET) para TableTools.

Preguntas relacionadas