Как распечатать данные с разбивкой по сетке - PullRequest
1 голос
/ 26 марта 2010

У меня есть кнопка HTML, после нажатия кнопки я вызываю следующую функцию javascript, передавая идентификатор div, в котором присутствует мой gridview.

function CallPrint(strid)

{  
var prtContent = document.getElementById(strid);

var WinPrint = window.open('', '', 'left=0,top=0,width=900,height=600,toolbar=1,scrollbars=1,status=0');

WinPrint.document.write( prtContent.innerHTML );

WinPrint.document.close();

WinPrint.focus();

WinPrint.print();

WinPrint.close();  


}  

Поскольку в моем сеточном представлении содержится около 3000 записей, я разбиваю на страницы результаты. Поэтому, когда я использую приведенный выше код для печати, я могу видеть только распечатанные записи с 1-й страницы. Поэтому, чтобы распечатать все записи, которые я Мысль о размещении 2 представлений сетки (одно с Allowpaging = 'true', а другое с 'false') на странице, и я связываю один и тот же источник данных с ними обоими. Для gridview с Allowpaging = 'false' установлено значение 'display :никто' при загрузке страницы и вышеупомянутом методе CallPrint () я хотел установить отображение этого вида сетки на «блок», а на другое - «нет». Но, похоже, он не работает нормально, так как пользователь увидит все записи в браузер, а не только в печатном документе.

Я также подумал об использовании сеанса для сохранения моего вида сетки и печати его на другой странице, как упоминалось здесь . Поскольку мои данные огромны (около 3000 записей), я запутался, если это повлияет на производительность ...

Может кто-нибудь подсказать, как можно распечатать все данные?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2015
function printItn() {
        //you can put your contentID which is you want to print.

        var printContent = document.getElementById('<%= pnlForm.ClientID %>');
        var windowUrl = 'about:blank';
        var uniqueName = new Date();
        var windowName = 'Print' + uniqueName.getTime();

        //  you should add all css refrence for your Gridview. something like.

        var WinPrint= window.open(windowUrl,windowName,'left=300,top=300,right=500,bottom=500,width=1000,height=500');WinPrint.document.write('<'+'html'+'><head><link href="cssreference" rel="stylesheet" type="text/css" /><link href="gridviewcssrefrence" rel="stylesheet" type="text/css" /></head><'+'body style="background:none !important"'+'>');

        WinPrint.document.write(printContent.innerHTML); 
        WinPrint.document.write('<'+'/body'+'><'+'/html'+'>');
        WinPrint.document.close();
        WinPrint.focus();
        WinPrint.print();
        WinPrint.close();
        }
0 голосов
/ 07 марта 2011

Я бы использовал другой метод страницы вместо двух видов сетки. Преимущество заключается в уменьшении состояния просмотра для всех, и только люди, которые нажимают на печать, увидят какое-либо влияние на производительность записей 3k, и, честно говоря, 3k должны рендериться довольно быстро. Другим вариантом будет iframe 2-го вида сетки и использование jquery для печати этого iframe, в прошлом я использовал эту библиотеку -> http://projects.erikzaadi.com/jQueryPlugins/jQuery.printElement/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...