打印asp的所有步骤:向导控制

时间:2011-07-28 15:22:54

标签: printing aspwizard

我的Web应用程序中有一个asp:Wizard控件。我需要能够在向导中的任何步骤进行打印,并将所有步骤打印到该步骤而不仅仅是当前步骤。

我在每个步骤页面都添加了一个打印按钮,并尝试调用javascript:window.Print(),但只打印当前步骤。

如何在1页中完成所有步骤?

我想在我沿着PDF路线走之前先尝试使用javascript。我试过这样做:

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>

但是我在第3行遇到了一个丢失的runat =服务器错误,当我尝试渲染向导控件时,所以我想我可能需要创建一个新窗口,然后在打印之前输出字符串,但是不能好像有点工作......任何想法?

2 个答案:

答案 0 :(得分:1)

我找到了解决我的问题的方法,我没有设法完成它的客户端,但我设法解决它的服务器端,这比我不想做的PDF路线更好。 我在这里发现了一篇很棒的文章 Printing in ASP.NET

我建议一次打印我的向导控件的所有步骤。谢谢你的帮助。

答案 1 :(得分:0)

如果您将向导步骤放到单个页面中,那么您已经使用的javascript打印方法将起作用,因此它们都会呈现...

另一种方法我想只需浏览每一步并按下你的打印按钮。

我这样做的方法是使用类似pdfsharp的东西,并给它标记生成每一步并告诉它为每个标记步骤创建一个pdf页面...从那里用户有一个pdf文档,他们可以使用他们常用的pdf查看器查看保存或打印。

问题是javascript方法正在使用基于dom的api调用来要求浏览器打印页面,这当然最终意味着您只能打印当前正在查看的向导步骤...使用pdf方法意味着用户可以在打印前预览预期的打印输出,并且您可以更好地控制打印的内容。

虽然需要更多代码......

pdfsharp可以在这里找到:http://www.pdfsharp.net/Downloads.ashx

正如你可以看到它的免费和开源。