Как распечатать gridview с прокруткой? - PullRequest
4 голосов
/ 19 марта 2012

Я делаю вид сетки, в котором используется прокрутка, поскольку столбец больше ширины страницы моей веб-страницы.Проблема в том, что когда я хочу распечатать, он печатает только показанные данные.Как я могу напечатать все в div или панели?

МОЙ КОД ДЛЯ GRIDVIEW:

<a href="#" onclick="printPartOfPage('content-middle')" >PRINT ME </a>

<asp:Panel ID="gridPanel" runat="server" Height="500px" Width="980px" ScrollBars="Auto">


   <asp:GridView EnableSortingAndPagingCallbacks="true" Width="450px" 
            OnRowCreated="GridView1_RowCreated" runat="server" ID="GridView2" 
          CellPadding="4" ForeColor="#333333" GridLines="None" 
            >

                 <AlternatingRowStyle BackColor="White" ForeColor="#284775" />

                 <Columns>

                     <asp:HyperLinkField DataNavigateUrlFields="ID" 
                         DataNavigateUrlFormatString="updateAppointmentOperations.aspx?showID={0}" Text="Update " 
                         Target="_blank" />
                 </Columns>

                 <EditRowStyle BackColor="#999999" />
                 <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                 <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                 <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                 <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                 <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                 <SortedAscendingCellStyle BackColor="#E9E7E2" />
                 <SortedAscendingHeaderStyle BackColor="#506C8C" />
                 <SortedDescendingCellStyle BackColor="#FFFDF8" />
                 <SortedDescendingHeaderStyle BackColor="#6F8DAE" />

             </asp:GridView>

    </asp:Panel>

И распечатка javascript, которую я получил из Интернета, и это:

<script type="text/javascript">

function printPartOfPage(elementId) {
    var printContent = document.getElementById(elementId);
    var windowUrl = 'about:blank';
    var uniqueName = new Date();
    var windowName = 'Print' + uniqueName.getTime();
    var printWindow = window.open(windowUrl, windowName, 'left=50000,top=50000,width=0,height=0');

    printWindow.document.write('<link rel="stylesheet" type="text/css" href="style/additional.css" /><link rel="stylesheet" type="text/css" href="style/default.css" /><link rel="stylesheet" type="text/css" href="style/hi-res.css" />' + printContent.innerHTML);
    printWindow.document.close();
    printWindow.focus();
    printWindow.print();
    printWindow.close();
}

Вид сетки находится в элементе div со средним содержимым идентификатора.

Спасибо

Ответы [ 3 ]

3 голосов
/ 19 марта 2012

Вы можете добавить на страницу другой GridView, который будет использоваться только для печати. ​​

Способ переключения между отображаемым изображением состоит в том, чтобы соответствующим образом украсить их классами CSS.

Например:

<style>
@media print {
    .PrintOnly { display:block; }
    .ScreenOnly { display:none; }
  }
  @media screen {
    .PrintOnly { display:none; }
    .ScreenOnly { display:block; }
  }
</style>
1 голос
/ 19 марта 2012

Есть несколько способов сделать это. Вероятно, наиболее удобным для пользователя является использование css для установки различных стилей отображения и печати с использованием директивы @media. Вместо установки свойств высоты и ширины dridPanel, используйте css, чтобы установить высоту и ширину - 500 и 980, когда носитель «экран», и просто установите ширину на 100%, когда носитель печатается. (Пусть он будет, и он должен показать все это)

Более подробную информацию о директиве @media css можно найти здесь: http://www.w3schools.com/CSS/css_mediatypes.asp

Хорошая статья об использовании css для печати страниц здесь: http://www.envisionic.com/webtips/user_experience/printer_friendly.php

0 голосов
/ 13 ноября 2014

Хорошо - это возможно, но я действительно отговорил бы вас от этого.Воспользуйтесь Crystal Reports или чем-то еще.Существует даже пара решений для создания отчетов с открытым исходным кодом, использующих RDL.

То, что вы можете сделать в Crystal за 30 минут, занимает гораздо больше времени.Я провел непристойные исследования, чтобы понять, возможно ли это.В MSDN есть статья, которая работает

http://msdn.microsoft.com/en-us/library/aa479018.aspx

. Она входит и определяет альтернативу system.web.ui.page, и я должен признать, что он делает очень хорошую работу.Я должен был сделать небольшую настройку, потому что пользователи хотели счетчик строк страницы.

Снова я могу засвидетельствовать, что это работает - выполняет разбиение на страницы, заголовки столбцов, разрывы управления, может суммировать столбцы.Если вы хотите контролировать свои поля, подумайте о библиотеке JavaScript MEADCO (я думаю).Кроме того, он включает в себя логику, чтобы пользователь мог просматривать страницы, но я не мог заставить его работать.Но, учитывая, что у меня всего 3 месяца опыта работы с ASP - возможно, это легко исправить.

Добро пожаловать в мое решение DLL для VS 2010.Дайте мне знать, если смогу помочь.

...