代码之家  ›  专栏  ›  技术社区  ›  delliottg

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

  •  0
  • delliottg  · 技术社区  · 6 年前

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

    我通读了这些问题,并尝试了他们的大多数解决方案,但都无济于事: window.print() is not printing the whole page

    window.print() only prints the “viewable” part of the screen

    ScriptManager.RegisterStartupScript code not working - why?

    我也尝试了一些建议:

    Advanced CSS Printing — Using CSS Page Breaks

    以下是ScriptManager的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);

    以下是相关的CSS:

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

    我需要点击事件,以允许我打印 全部的 页面,不仅仅是第一页。可能更简单地说,给我一个完全相同的对话框,我得到了一个右击&打印。我错过了什么?

    1 回复  |  直到 6 年前
        1
  •  0
  •   delliottg    6 年前

    好吧,这是很容易的,只要你可以做一些客户端代码(我同意这个解决方案)。

    <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事件仍然运行,以便在后台更新打印计数。

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