我在我的aspx页面中有这段代码;
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a>它提供了一个链接,用于在用户单击列表时将列表打印到pdf;正如您所注意到的,该脚本从后台代码调用一个函数。
问题是,当我写这段代码时,当我进入这个页面时,它会在加载时打印成pdf格式,我以为它会等待点击,但实际上它会执行打印。
有什么问题吗?提前谢谢。
警局。我使用的是VS2005,对于pdf创建,我使用的是iTextSharp。
发布于 2008-11-14 00:10:52
您希望使用HyperlinkControl并将OnClick事件处理程序连接到Print方法后面的代码。当用户单击该链接时,页面将回发,并引发OnClick事件。从那里你可以打印你的PDF。
在您的示例中,Print()函数是在页面加载时计算的。带有<% %>和<%= %>括号的任何内容都会在渲染时求值。
做你想做的事情的最好方法是在你的页面上有一个链接,它重定向到一个ASHX页面,然后将PDF直接输出到响应流中。应该有很多关于如何在这个地方(Google ashx)这样做的例子。链接将如下所示:
<a href="PrintMyPdf.ashx?PageID=<%= CurrentPageId %>">Print</a>这将向ashx传递一个参数"PageID“,您可以从中确定要打印的页面。<%= %>语法计算表达式(在本例中是代码中的属性,但它可以是方法或形式),并将结果插入到页面的该部分。
因此,如果您的属性是:
protected int CurrentPageId { get { return 4; } }它将在您的页面中写入以下内容:
<a href="PrintMyPdf.ashx?PageID=4">Print</a>抢夺
发布于 2008-11-14 00:30:46
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a>你不能这么做。我知道你在想什么,但这是不可能的,而且(对不起)太天真了。
写道:
问题是,当我写这段代码时,当我进入这个页面时,它会在加载时打印成pdf格式,我以为它会等待点击,但实际上它会执行打印。
这绝对是有道理的。您需要做的是将对()函数的调用放入不同的网页中,然后在您的onclick event中通过AJAX调用此网页。
发布于 2008-11-14 00:07:22
从您的代码片段中准确地判断发生了什么有点困难,但我假设您将pdf文件作为print()函数的一部分输出到响应流。这将在加载时显示pdf,因为后台代码是在呈现时(就在它将代码发送到浏览器之前)计算的,而不是在客户机上计算。
要获得您想要的行为,最好的方法是创建一个http处理程序文件(ashx),它将接受任何需要的参数作为url上的请求变量,然后将pdf输出到流。
然后,您只需使用正确的参数创建一个指向ashx文件的href即可显示文档。
https://stackoverflow.com/questions/288814
复制相似问题