2014-12-07 63 views
0

我想呈现一些领域之前导出到我的函数中的excel我这样做;Datatable fnCellRender不呈现

"tableTools": { 
       "sSwfPath": "assets/global/plugins/data-tables/tabletools/swf/copy_csv_xls_pdf.swf", 
       "aButtons": [ { 
        "sExtends": "xls", 
        "sButtonText": "Excel", 
        "fnCellRender":function(sValue,iColumn,nTr,iDataIndex){ 
         console.log(sValue); 
         //console.log($(sValue)); 
         return sValue; 
        } 
       }, { 
        "sExtends": "print", 
        "sButtonText": lang.L_PRINT, 
        "sInfo": lang.L_PRINT_DESC, 
        "sMessage": "Metrics" 
       }] 
      } 

所以,当我取消

console.log($(sValue)); 

它返回只是第一和第二列不包括里面所有的HTML标签。但是当它发现一个有html标签的值时,它会停止。

前 - 这得到VALU

<td class=" sorting_1">201408</td> 

这并不

<span style="text-align:right;display:block;width:100%">121.25</span> 

我怎样才能解决这个问题?

回答

1

要解决这个问题,我发现只需将数据写入CSV并查看格式,以便我可以选择如何解析就容易多了。

当您使用fnCellRender属性TableTools不会再对HTML进行任何解析。我希望你会看到控制台窗口中的原始数据,其中一些是我假设的HTML和其他值。

当它是HTML时,您可以使用JQuery来提取值或正则表达式。 E.g

if ($(sValue).prop("checked")) { 
     return "TRUE"; 
} else { 
     return "FALSE"; 
} 

或在您的情况

return $(sValue).val(); 

一些研究,我用:
TableTools background and good discussion with links

TableTools Reference API