我的aspx页面中有这段代码;
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a>
,它提供了一个链接,用于在用户点击时将列表打印到pdf;你可以注意到脚本从后面的代码调用一个函数。
问题在于,当我对此进行编码时,当我进入此页面时,它会在加载时打印到pdf,我认为它会等待点击而是执行打印。
有什么问题?提前谢谢。
PD。我正在使用VS2005和pdf创建我使用iTextSharp。
答案 0 :(得分:1)
您想使用HyperlinkControl并将OnClick事件处理程序连接到Print方法后面的代码。当用户点击该链接时,该页面将回发并引发OnClick事件。从那里你可以打印你的PDF。
在您的示例中,在页面加载时会评估Print()函数。任何有&lt; %%&gt;的东西和&lt;%=%&gt;括号在渲染时得到评估。
执行所需操作的最佳方法是在页面上显示一个链接,该链接会重定向到ASHX页面,然后将PDF直接输出到响应流中。应该有很多关于如何在这个地方完成这方面的例子(Google ashx)。链接看起来像这样:
<a href="PrintMyPdf.ashx?PageID=<%= CurrentPageId %>">Print</a>
这会将参数“PageID”传递给ashx,您可以从中确定要打印的页面。 &lt;%=%&gt;语法评估表达式(在这种情况下是代码隐藏的属性,但它可以是方法或论坛)并将结果插入页面的该部分。
所以如果你的财产是:
protected int CurrentPageId { get { return 4; } }
它会将以下内容写入您的页面:
<a href="PrintMyPdf.ashx?PageID=4">Print</a>
罗布
答案 1 :(得分:1)
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a>
你不能这样做。我知道你在想什么,但这是不可能的,而且(对不起)天真。
nmiranda写道:
问题在于我编码时 它发生在我去这个页面的时候 加载时打印到pdf,I 以为它会等待点击但是 相反,它执行打印。
这绝对有道理。您需要做的是将Print()函数调用到不同的网页,然后在 onclick事件中通过AJAX 调用此网页。
答案 2 :(得分:0)
从您的代码片段中确切地说出发生了什么有点困难,但我认为您将pdf文件作为print()函数的一部分输出到响应流中。 这将在加载时显示pdf,因为后台代码在渲染时(在将代码发送到浏览器之前)进行评估,而不是在客户端上进行评估。
要获得行为,您希望最好的方法是创建一个http处理程序文件(ashx),它将接受任何必需的参数作为url上的请求变量,然后将pdf输出到流。
然后,您可以使用正确的参数创建一个href到ashx文件,以显示该文档。
答案 3 :(得分:0)
您只需要另一个页面即可打印PDF文档。假设该页面为printPDF.aspx
您只需将链接更改为
即可<a href="printPDF.aspx" title="Print listings">Print</a>
如果您必须将参数传递给它,那么我会将链接更改为
<a href="javascript:void(0);" onlick="javascript:GoToPrint();" title="Print listings">Print</a>
脚本:
<script>
function GoToPrint()
{
window.location = 'printPDF.aspx?var1=x&var2=y';
}
</script>
答案 4 :(得分:0)
最后我做到了,我必须清楚,首先我使用另一个网页制作了所有报告,根据我收到的回复,我意识到我使用href在同一页面内调用报告的方法不是正确的。
所以,我对罗伯特·瓦格纳的建议进行了分析,并尝试了这种方法;
protected void btnPrint_Click(object sender, EventArgs e)
{
...
string url = GetUrlWithParameters();
string reportscript = "<script language='JavaScript'>" +
"window.open('" + url + "', 'CustomPopUp', " +
"'width=400, height=400, resizable=yes, scrollbars=yes')" +
"</script>";
Page.RegisterStartupScript("reportscript", reportscript);
...
在GetUrlWithParameters()中我构建和url调用ashx来生成我的报告,ashx根据一些问题接收不同的参数并且它工作得非常好。
它执行脚本并在我需要的其他窗口中显示pdf。
感谢名单。