打印以 ASP.NET 分页符分隔的所有页面



我有一个带有 #resultsDiv 的网页,该网页是根据后端查询动态创建的,该查询是动态创建的,该查询的美元价值和预期数量在每个零件号数据之间插入了CSS分页符。 #resultsDiv 中可以有很多页面,也可以只有几个页面,具体取决于用户设置的筛选器。 它的设计使我们的库存团队可以在仓库中可能找到该零件的位置为每个零件编号打印一页。

我的问题是,当我单击按钮打印div中的页面(下面的代码(时,它只显示第一页(这是我不想打印的唯一页面(。 相反,如果我右键单击并打印,则所有页面都可以打印。

我已经通读了这些SO问题,并尝试了他们的大多数解决方案,但无济于事: window.print(( 没有打印整个页面

window.print(( 只打印屏幕的"可查看"部分

ScriptManager.RegisterStartupScript 代码不起作用 - 为什么?

我也尝试了这里建议的一些东西:

高级 CSS 打印 — 使用 CSS 分页符

作为参考,下面是脚本管理器的 MSDN 条目:

ScriptManager.RegisterStartupScript Method

下面是点击处理程序:

protected void btnPrint_OnClick(object sender, EventArgs e)
{
if (!(ViewState["PartsToPrint"] is DataTable dt)) return;
DataView dv = new DataView(dt);
DataTable dtDistinctPartNumbers = dv.ToTable(true, "partNumber");
foreach (DataRow row in dtDistinctPartNumbers.Rows)
{
//pull out the data as needed from the datatable rows
string partNumber = row["partnumber"].ToString();
if (!dbf.IncrementPrintCount(GetSelectedOrganization(), partNumber))
{
setStatus(false, "Error saving print count");
}
}
ScriptManager.RegisterStartupScript(resultsDiv, GetType(), resultsDiv.UniqueID, "window.print();", true);
}

我也试过:

ScriptManager.RegisterStartupScript(this, typeof(Page), "Print", "window.print();", true);

ScriptManager.RegisterStartupScript(resultsDiv, typeof(Page), "Print", "window.print();", true);

以及其他变体,包括ASP渲染面板(div(选择器(请参阅下面的CSS(,所以我没有想法了。

以下是相关的 CSS:

@media print {
body, html, #wrapper, #resultsDiv, 
#ContentPlaceHolder1_resultsDiv {
height: 100%;
width: 100%;
}
p.pagebreakhere {
display: block;
page-break-before: always;
}
}

我需要单击事件来允许我打印所有页面,而不仅仅是第一页。 可能更简单地说,给我一个与右键单击和打印完全相同的对话框。 我错过了什么?

好吧,事实证明这很容易,只要你同意做一些客户端代码(我对这个解决方案没问题(。

在.aspx页面中,修改:

<asp:Button runat="server" ID="btnPrint" OnClick="btnPrint_OnClick" Text="Print for recount"/> 

自:

<asp:Button runat="server" ID="btnPrint" OnClick="btnPrint_OnClick" Text="Print for recount" OnClientClick="javascript:window.print();"/>

弹出"右键单击和打印"对话框,允许用户打印所有页面,并且OnClick事件仍然运行以执行打印计数的后端更新。

可能有一个更优雅的解决方案,但我有时间限制(库存在本周晚些时候(,所以我愿意继续这个解决方案。

最新更新