Распечатать все шаги asp: Wizard control - PullRequest
2 голосов
/ 28 июля 2011

В моем веб-приложении есть элемент управления asp: Wizard. Мне нужно иметь возможность печатать на любом шаге в мастере и печатать все шаги до этого шага, а не только текущий шаг.

Я добавил кнопку печати на страницу каждого шага и попытался вызвать javascript: window.Print (), но печатается только текущий шаг.

Как мне получить все шаги для печати на 1 странице?

Я хотел бы попытаться заставить это работать в javascript, прежде чем идти по маршруту PDF. Я пытался сделать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e) 
    { 
        StringWriter sw = new StringWriter(); 
        HtmlTextWriter tw = new HtmlTextWriter(sw); 
        this.WizardStep2.RenderControl(tw); 
        string wizardHtmlContent = sw.ToString().Replace("\r\n", ""); 

        string printScript = @"function printDiv(printpage) 
                                { 
                                var headstr = '<html><head><title></title></head><body>'; 
                                var footstr = '</body>'; 
                                var newstr = printpage; 
                                var oldstr = document.body.innerHTML; 
                                document.body.innerHTML = headstr+newstr+footstr; 
                                window.print();  
                                document.body.innerHTML = oldstr; 
                                return false; 
                                }"; 


        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "PrentDiv", printScript, true); 
        this.Button1.Attributes.Add("onclick", "printDiv('" + wizardHtmlContent + "');"); 

    }

и для aspx:

<form id="form1" runat="server"> 
<div> 
     <asp:Wizard ID="Wizard1" runat="server"> 
        <WizardSteps> 
            <asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1"> 
                step1 
            </asp:WizardStep> 
            <asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2"> 
                step2 
            </asp:WizardStep> 
        </WizardSteps> 
    </asp:Wizard> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 
</div> 
</form>

Но я получаю пропущенную ошибку runat = server в строке 3, когда я пытаюсь визуализировать элемент управления мастера, поэтому я думаю, что мне может понадобиться создать новое окно, а затем вывести строку, прежде чем я ее распечатаю, но не могу Кажется, это работает ... У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Я нашел решение для своей проблемы, мне не удалось выполнить его на стороне клиента, но мне удалось решить его на стороне сервера, что лучше, чем идти по маршруту PDF, что я не хотел делать. Я нашел отличную статью здесь: Печать в ASP.NET

, который я исправил, чтобы распечатать все шаги моего волшебного контроля за один раз. спасибо за вашу помощь.

0 голосов
/ 28 июля 2011

Метод печати javascript, который вы уже используете, будет работать, если вы поместите шаги мастера на одну страницу, чтобы они все отображались ...

другой способ, который я предполагаю, - просто просмотреть каждый шаги нажмите кнопку печати.

то, как я бы это сделал, это использовать что-то вроде pdfsharp и давать ему разметку, генерируемую каждым шагом, и указывать ему создавать страницу pdf для каждого шага разметки ... оттуда у пользователя есть pdfдокумент, который они могут просто просмотреть, сохранить или распечатать, используя свой обычный просмотрщик PDF.

Проблема заключается в том, что метод javascript использует API-вызов на основе DOM, чтобы попросить браузер напечатать страницу, что, конечно, в конечном итоге означает, что вы можетепечатать только тот шаг мастера, который вы сейчас просматриваете ... использование метода pdf означает, что пользователь может предварительно просмотреть ожидаемую распечатку перед печатью, и у вас есть больший контроль над напечатанным.

Это требует немного большекод, хотя ...

pdfsharp можно найти здесь: http://www.pdfsharp.net/Downloads.ashx

Как вы можете видеть его бесплатный и открытый исходный код.

...