Как я могу решить, что Firefox зависает и вылетает при попытке распечатать данные radgridview из приложения silverlight 4.0? - PullRequest
0 голосов
/ 22 февраля 2012

Я использую Mozilla Firefox 8.0.1 под управлением Microsoft Windows XP Professional версии 2002 с пакетом обновления 3. При попытке печати, выбрав принтер HP Laser Jet 1320 PCL 5 или Microsoft XPS Document Writer, происходит сбой браузера.

Примечание. В диалоговом окне «печать» отображаются только «процессы: подготовка». если я нажму на диалог или браузер он говорит, что программа не отвечает. я перезагружаю браузер и сбрасываю предпочтения печати (print_printer), но это не решает мою проблему.

Я печатаю данные radgridview (одного из элементов управления telerik) из моего приложения silverlight 4.0 с Visual Studio 2010. Он отлично работает для меньшего количества данных, но когда мы переходим к большому количеству, он вылетает только из-за лисицы, а не из других браузеров, таких как как то есть, хром, сафари и т.д ...

есть ли способ решить эту проблему?

Вот мой код:

Xaml.cs page
------------
private void PrintButton_Click(object sender, RoutedEventArgs e)

    {
        try
        {
            rptDataGridData = new RadGridView();
            rptDataGridData = reportPlaceHolder.FindChildByType<RadGridView>() as RadGridView;
            if (rptDataGridData != null ? rptDataGridData.ItemsSource != null : false)
            {
                Telerik.Windows.Controls.ExportFormat format = Telerik.Windows.Controls.ExportFormat.Html;
                format = Telerik.Windows.Controls.ExportFormat.Html;
                MemoryStream ms = new MemoryStream();
                rptDataGridData.Export(ms,
                         new GridViewExportOptions()
                         {
                             Format = ExportFormat.Html,
                             ShowColumnHeaders = true,
                             ShowColumnFooters = true,
                             ShowGroupFooters = false,
                         });

                StringBuilder data = new StringBuilder();
                StreamReader streamReader = new StreamReader(ms);
                ms.Position = 0;
                streamReader.DiscardBufferedData();
                while (!streamReader.EndOfStream)
                {
                    data.Append(streamReader.ReadLine());
                }

                data = data.Replace("style=", "class=\"heading\" style=");
                string htmlContent = string.Format(
                    @"<style type='text/css'>
                        html, body {{
                                    font-family:Verdana, Arial, Helvetica, sans-serif;
                                }}
                        table {{
                            border-width: 1px;
                            border-spacing: 1px;
                            border-style: none;
                            border-color: gray;
                            border-collapse: collapse;
                            background-color: white;
                        }}
                        table td {{
                            border-width: 1px;
                            padding-left: 3px;c
                            padding-right: 15px;
                            padding-top:5px;
                            padding-bottom:3px;
                            border-style: inset;
                            border-color: gray;
                            background-color: white;
                            font-size:11px;
                        }}
                        table td.heading {{
                            border-width: 1px;
                            padding-left: 5px;
                            padding-right: 15px;
                            padding-top:5px;
                            padding-bottom:5px;
                            border-style: inset;
                            border-color: rgb(192, 192, 192);
                            font-weight: bold;
                        }}
                     </Style>
                    {0}"
                    , data.ToString());



                HtmlPage.Window.Invoke("WriteContent", new object[] { htmlContent });
            }
            else
            {
                MessageBox.Show("There is no data to print", MortalMessage.MortalErrorHeading, MessageBoxButton.OK);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message,MortalMessage.MortalErrorHeading,MessageBoxButton.OK);
        }
    }
       aspx page
       ---------

        function WriteContent(contentToPrint) {
        var ifrm = document.getElementById('frmPrint');
        ifrm = (ifrm.contentWindow) ? ifrm.contentWindow :                                       (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
        ifrm.document.open();
        ifrm.document.write(contentToPrint);
        ifrm.document.close();
        ifrm.focus();
        ifrm.print();

        <iframe src="about:blank" runat="server" id="frmPrint" height="0" width="0" />

1 Ответ

0 голосов
/ 22 февраля 2012

Попробуйте отключить надстройки, перезапустить Firefox и попытаться распечатать.Возможно, вы установили надстройку, которая вызывает зависание.

Как отключить надстройки?Shift + клик по Firefox, чтобы открыть в безопасном режиме, отключить все надстройки и сбросить панели инструментов и элементы управления.Нажмите «Внести изменения и перезапустить».

Я бы все равно рассмотрел вопрос об обновлении вашей версии Firefox - вы выиграете от множества других исправлений и улучшений.

...