我的 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=server 错误,所以我认为我可能需要创建一个新窗口,然后在打印之前输出字符串,但似乎无法得到那个工作......任何人有任何想法吗?