2011-09-22 2 views
5

JQuery DataTables TableTools 플러그인을 사용하고 있으며 PDF의 기본 파일 이름을 정의하고 있습니다. 그러나, 나는 ajax와 함께 datatables를 사용하고 있으며 날짜 범위 선택기가 있으므로 페이지가 새로 고쳐지지 않아 기준 변경시 새 기본 파일 이름을 제공 할 수 없습니다.DataTables 수정 TableTools 기본 PDF 내보내기 파일 이름 (런타임시)

datatables가 테이블 도구로 초기화 된 후 즉, 구성을 직접 수정하면 런타임시 기본 파일 이름을 어떻게 변경할 수 있는지 알고있는 사람이 있습니까?

   "oTableTools": { 
       "sSwfPath": "js/DataTables/copy_cvs_xls_pdf.swf", 


       "aButtons": [ 
        "copy", 
        "csv", 
        "xls", 
        { 
         "sExtends": "pdf", 
         "sTitle": "Report Name", 
         "sPdfMessage": "Summary Info", 
         "sFileName": "<?php print('How do i use jquery to change this after the table has been initialized'); ?>.pdf", 
         "sPdfOrientation": "landscape" 
        }, 
        "print" 
       ] 

      } 

답변

9

동적으로 생성되는 이름이 필요합니다. (문자열) 파일 이름을 반환하는 함수를 만듭니다.

function getCustomFileName(){ 
    var docDate = $("#from").val(); 
    var filter = $("#example_filter input").val(); 
    var oSettings = oTable.fnSettings(); 
    var fileName = docDate+"_"+filter; 
    return fileName; 
} 

그리고 $(document).ready하지만 외부 $('#dTable').dataTable({ }) 내부의 함수를 사용합니다.

"oTableTools": { 
       "sSwfPath": "js/DataTables/copy_cvs_xls_pdf.swf", 
       "aButtons": [ 
        "copy", 
        "csv", 
        "xls", 
        { 
         "sExtends": "pdf", 
         "sTitle": "Report Name", 
         "sPdfMessage": "Summary Info", 
         "sPdfOrientation": "landscape" 

         "fnClick": function(nButton, oConfig, flash) 
         { 
          customName = getCustomFileName()+".pdf"; 
          flash.setFileName(customName); 
          this.fnSetText(flash, 
           "title:"+ this.fnGetTitle(oConfig) +"\n"+ 
           "message:"+ oConfig.sPdfMessage +"\n"+ 
           "colWidth:"+ this.fnCalcColRatios(oConfig) +"\n"+ 
           "orientation:"+ oConfig.sPdfOrientation +"\n"+ 
           "size:"+ oConfig.sPdfSize +"\n"+ 
           "--/TableToolsOpts--\n" + 
           this.fnGetTableData(oConfig) 
          ); 
         }       
        }, 
        "print" 
       ] 

      }