Is there any way to print Igrid contents only in a page?
Regards,
Suresh A
Hi Suresh,
Can you specify what do you mean with igGrid Contents only? Do you want to print all the rows loaded on the page?
Thanks,
Yes i want to print all the rows in the grid. I have not enabled paging in my grid.
Hi Martin,
I still have issues with the solution which you have suggested. I have some 15 columns with both horizontal and vertical scroll bars. When i click on print it is not printing the entire grid contents. Even with the file which you have attached it is not printing the entire contents. Is there any other way??? If so pls upload the sample.
Have you tried my approach on this? It should work for all the rows in the igGrid.
Thanks
Hi Todor,
$('#exportButton').click(function (){
$('<table id="resultTable"></table>').appendTo($('#printgrid2')); var rows = $('#grid2').igGrid('allRows'); rows.each(function(index, element) { var rowData = $(this).clone(); var currentRow = '<tr>' + $(rowData ).html() + '</tr>'; $(currentRow ).appendTo($('#resultTable')); }); var printWin = window.open("", "Printable", " location=no, toolbar=no, titlebar=no, resizable=no, status=no, menubar=no"); printWin.document.open(); printWin.document.write('<table>' + $('#printgrid2').html() + '</tr>'); printWin.print(); printWin.close(); });
<div id="printgrid2"></div><input type="button" value="exportButton" id="exportButton" onclick="exportButton();"/>
I have implemented like above but the thing is i am not getting when do i need to clear the div container. Also in the code you have mentioned .divContainer i have replaced it with printgrid2 let me know is this correct or not. Also if i need to get the headers printed on top then what do i need to do. Also how do i get the borders for ts since we have only table and tr tags in itl PLs correct me if i am wrong.
Any updates on this?
Here is the complete code of the handler:
$('#exportButton').click(function (){ var finalTable = $("#grid2").igGrid("headersTable"); $(finalTable).attr('id', 'finalTable'); $('#finalTable').appendTo($('#printgrid2')); var rows = $('#grid2').igGrid('allRows'); rows.each(function(index, element) { var row = $(this).clone(); var completeRow = '<tr>' + $(row).html() + '</tr>'; $(completeRow).appendTo($('#finalTable')); }); var printWin = window.open("", "Printable", " location=no, toolbar=no, titlebar=no, resizable=no, status=no, menubar=no"); printWin.document.open(); printWin.document.write('<table>' + $('#finalTable').html() + '</tr>'); //You can clear the div container here $('#printgrid2').empty(); printWin.print(); });
If you use this approach this binding "onclick="exportButton();"" could be removed as jQuery will attach the handler to the click event
Hi,
Thank you for solving my problem with paginated tables.If you want to have styles for the table I want to print, as it should?Thanks in advance.
Best Regards.
I have a solution which assumes that the whole data is available in the browser i.e. grid is not configured to use remote paging.
The idea is to get the data form the grid data source object and then use it to generate new table with the whole data in it. The original igGrid is not touched. CSS media rules are used to hide the original igGrid when in @media print and show the generated one and vice versa in @media screen mode. If you use a custom button for printing you can delay the generation of the print table until the button is clicked. If you want user to be able to use the browser "Print" button then you should generate the print table after you create the igGrid.
The downside of this method is that you should keep an extra TABLE element in the DOM. If there are too many records in the data source then this may degrade the performance of the page.
Attached you can find a reference implementation of the described method. I used custom button for printing in order to show you a workaround for Internet Explorer. Internet Explorer doesn't like generating the print table on demand before printing. That's why I use conditional comments for IE in order to workaround the problem.
P.S.: It doesn't make sense to use remote paging in case that you want to print the whole data. That's why I didn't cover that scenario.
Hope this helps,
Martin Pavlov
Infragistics, Inc.
I have a question similar to this post resolved.
How could we get all the data in the table if the grid is paged? If the grid is paged, we can only access the data of the displayed page. Will print only the current page data. Thanks in advance.
Best Regards
I have uploaded a sample code and the issue which i am facing. Kindly have a look at it and provide me a solution for the same.
Hello Suresh,
Thank you for your great interest in our jQuery grid.
I asked you for an isolated sample in purpose.
I was not able to reproduce the issue using the code snippet provided by Todor
http://community.infragistics.com/forums/t/64705.aspx?PageIndex=2#330000
and the instructions from Martin
http://community.infragistics.com/forums/t/64705.aspx?PageIndex=2#329378
I am attaching the sample I used, trying to replicate the behavior.
Hope hearing from you