Print preview table
If all the td values are zero then, don't include in preview
by huday77
HTML
<table border="1" cellspacing="0">
<tr>
<th>Sl.No</th>
<th>Value 1</th>
<th>Value 2</th>
<th>Value 3</th>
</tr>
<tr>
<td>1</td>
<td>5</td>
<td>0</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>7</td>
<td>1</td>
<td>4</td>
</tr>
<tr>
<td>3</td>
<td>1</td>
<td>0</td>
<td>10</td>
</tr>
<tr>
<td>4</td>
<td>8</td>
<td>0</td>
<td>3</td>
</tr>
<tr>
<td>5</td>
<td>13</td>
<td>0</td>
<td>6</td>
</tr>
</table>
<br/>
<input type="button" value="Print Preview" onclick="printpage()" />
JavaScript
function printpage() {
var printableTable = $("table").clone();
var columnLen = printableTable.find("tr:nth-child(1)").find("th").size();
for(var i=1; i<=columnLen; i++){
var sum = 0;
printableTable.find("tr td:nth-child("+i+")").each(function(){
var nr = Number($(this).html());
sum += nr;
});
if (sum == 0)
{
printableTable.find("tr th:nth-child("+i+")").each(function() {
$(this).hide();
});
printableTable.find("tr td:nth-child("+i+")").each(function() {
$(this).hide();
});
}
}
var data = '<table border="1" cellspacing="0"><tr><td colspan="4">Sample Report</td></tr>' +
printableTable.html()
+ '</table>';
data += '<br/><button onclick="window.print()" class="noprint">Print the Report</button>';
data += '<style type="text/css" media="print"> .noprint {visibility: hidden;} </style>';
myWindow = window.open('', '', 'width=800,height=600');
myWindow.innerWidth = screen.width;
myWindow.innerHeight = screen.height;
myWindow.screenX = 0;
myWindow.screenY = 0;
myWindow.document.body.innerHTML = data;
myWindow.focus();
}