javascript - 在 ASP.NET 中打印由分页符分隔的所有页面
问题描述
我有一个带有#resultsDiv 的网页,该网页是根据对美元价值和预期数量的后端查询动态创建的,并在每个部件号的数据之间插入CSS 分页符。#resultsDiv 中可能有很多或只有几页,具体取决于用户设置的过滤器。它的设计使我们的库存团队可以为我们仓库中可能找到该零件的位置的每个零件编号打印一页。
我的问题是,当我单击按钮打印 div 中的页面(下面的代码)时,它只显示第一页(这是我不想打印的唯一页面)。相反,如果我右键单击并打印,则所有页面都可以打印。
我已经阅读了这些 SO 问题并尝试了他们的大多数解决方案,但均无济于事: window.print() 没有打印整个页面
ScriptManager.RegisterStartupScript 代码不起作用 - 为什么?
我也尝试了这里建议的一些东西:
作为参考,这里是 ScriptManager 的 MSDN 条目:
ScriptManager.RegisterStartupScript 方法
这是点击处理程序:
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 事件仍然运行以执行打印计数的后端更新。
可能有一个更优雅的解决方案,但我受到时间限制(库存在本周晚些时候),所以我愿意推进这个解决方案。
推荐阅读
- css - 如果标签元素中有锚元素,复选框不起作用
- python - 函数参数:ab 未定义
- r - 如何打印所选两个滑块范围之间的所有值,而不仅仅是这两个值?
- java - 关于“INSERT INTO... VALUES”,错误信息:VALUES 子句必须包含至少一个元素
- r - 循环遍历数据框列表以在 R 中创建图形
- rust - 如何制作具有特征的泛型泛型?
- jquery - addClass 作为元素中的第一个而不是最后一个
- excel - Excel:如何计算符合一个条件的日期之间的时间
- php - Google App Engine, 2 Services, dispatch.yaml: nginx-app.conf 似乎不再考虑
- java - 如何使用 Data Flow runner 从 ApacheBeam 将 hyperLogLog 字段保存到 BigQuery