【发布时间】:2018-11-05 07:43:32
【问题描述】:
我正在尝试在新选项卡中打开 pdf 文件,并弹出一条消息说交易已完成。然而,目前它在同一选项卡中打开,即 chrome 和 firefox 浏览器和 microsoft edge 打开 pdf。我有这个没有弹出的成功消息: Page.ClientScript.RegisterStartupScript(typeof(Page), "MessagePopUp", "alert('Transaction completed successfully'); window.location.href = 'LoadSheet.aspx ';", true); 这是我目前所拥有的。
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
StringBuilder sb = new StringBuilder();
//Generate Invoice (Bill) Header.
sb.Append("<table width='100%' cellspacing='0' cellpadding='2'>");
sb.Append("<tr><td align='center' style='background-color: #18B5F0' colspan = '2'><b>Load Sheet</b></td></tr>");
sb.Append(" </td></tr>");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("</td><td><b>Date: </b>");
sb.Append(DateTime.Now);
s
sb.Append("</td><td><b>Username: </b>");
sb.Append(user);
sb.Append("</td></tr>");
sb.Append("<tr><td ><b>Route: </b>");
sb.Append(route);
sb.Append("<tr><td><b>Date Order Loaded: </b>");
sb.Append(lDate);
sb.Append("</td></tr>");
sb.Append("</table>");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
//Generate Dispatch Sheet Items Grid.
sb.Append("<table border = '1'>");
sb.Append("<tr>");
foreach (DataColumn column in data.Columns)
{
sb.Append("<th style = 'background-color: #D20B0C;color:#000000'>");
sb.Append(column.ColumnName);
sb.Append("</th>");
}
sb.Append("</tr>");
foreach (DataRow row in data.Rows)
{
sb.Append("<tr>");
foreach (DataColumn column in data.Columns)
{
sb.Append("<td>");
sb.Append(row[column]);
sb.Append("</td>");
}
sb.Append("</tr>");
}
sb.Append("</tr></table>");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<br />");
sb.Append("<table>");
sb.Append("<tr><td colspan = '2'></td></tr>");
sb.Append("<tr><td><b>Driver Name:___________________</b><br/>");
sb.Append(driver);
sb.Append("</tr></td>");
Page.ClientScript.RegisterStartupScript(typeof(Page), "MessagePopUp", "alert('Transaction completed successfully'); window.location.href = 'LoadSheet.aspx';", true);
//Export HTML String as PDF.
StringReader sr = new StringReader(sb.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.End();
GridView1.AllowPaging = false;
GridView1.DataBind();
}
【问题讨论】:
-
您不会从服务器打开新标签页,而是在客户端打开。例如,如果用户单击链接打开此链接,请在该链接中添加
target="_blank"。 -
所以我会为要显示的 pdf 创建另一个 aspx 页面;可以举个例子吗
-
这是我的按钮
-
为什么需要创建另一个页面?目前尚不清楚您要做什么,但听起来您对其进行了过度设计。从所有这些代码中,甚至不清楚您是在返回实际的 PDF 还是返回 HTML。是哪个?
-
我正在返回一个 pdf。我只是问,因为我尝试使用目标,但我不确定我是否做错了