Pergunta sobre jquery-datatables, jquery, tabletools, javascript – Como usar um link no TableTools em vez de botões flash

6

Eu estou tentando encontrar uma maneira de alterar os botões no TableTools. Eu gostaria de usar meus próprios links personalizados em vez dos botões flash. Existe uma maneira de fazer isso? Qualquer bom recurso me ensinando como fazer essa modificação e ainda capaz de usar as funcionalidades, como a coleção de botões, etc.

Sua resposta

2   a resposta
0

é possível substituir os botões existentes, por exemplo, PDF / CSV, etc. ou criar novos botões personalizados com links para uma URL para obter ou publicar dados. Aqui, estou mostrando 2 métodos com métodos get:

Para mais informações sobre os métodos de obtenção e publicação:

Visita:Substituições do método de download GET / POST

Código gerado pdf é usado porque a saída pdf de tabletools em uma tabela que possui linhas agrupadas por alguns dados de coluna é sobreposta.

1º para substituir a função PDF e

2º para criar botão personalizado.

1. Substituir a função PDF para buscar pdf do código do 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ão personalizado para buscar pdf do código do 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>
@ Sudanhan, eu tenho usado um url que retorna arquivo pdf como fluxo para o navegador do usuário. Para especificar o url do gerador de pdf: "sUrl": "admin / user / 4 / downloadfile" O DataTable carrega o url por: iframe.src = oConfig.sUrl; T Gupta
@ Sudanhan, eu usei isso em muitos lugares no projeto. T Gupta
Se você fez alguma experiência com isso Suganthan Madhavan Pillai
Esse código é o mesmo do site deles no dataTable, ok, bem ... uma ajuda onde você está gerando o arquivo pdf aqui, parece que você está criando um mesmo iframe Suganthan Madhavan Pillai
4

De acordo com o criador, a única maneira de obter a funcionalidade de exportação TableTools é usando os botões Flash.

Os outros tópicos que você encontrou devem dizer que, atualmente, não, essa não é uma opção oferecida pelo TableTools. A opção Flash é usada para fornecer capacidade cruzada de plataforma / navegador para salvar arquivos inteiramente no lado do cliente - essa opção simplesmente não está disponível em navegadores mais antigos (IE6, IE7 etc) onde não há suporte para os dados: // protocol e opções de interação do sistema de arquivos local.

Certamente seria possível adicionar essa habilidade ao TableTools, mas ainda não tive a oportunidade de fazê-lo. Está no mapa rodoviário embora.

Allan

Se você estiver interessado em criar o lado do servidor de arquivos de exportação, você pode querer consideraro plug-in de download (GET) para TableTools.

Perguntas relacionadas