0

好吧,问题比较理论,所以代码不多。我所拥有的是一个页面BookingSlip.aspx和其他页面BookingDetails.aspx,其中有一个显示预订详细信息的网格视图,该网格的第一个列是链接到的超链接字段BookingSlip.aspx,将预订号作为查询字符串传递。在其中BookingSlip.aspx有一个btn_Print我简单调用的按钮,它Window.Print只是弹出用于打印的 Windows 对话框,当用户执行所需的步骤(单击确定,选择打印机等)时,Windows(或任何操作系统用户正在使用)句柄其余的部分。直到现在一切都很好。

但是我必须做的是允许用户选择多个预订号码BookingDetails.aspx(通过在gridview中添加一个复选框列,这不是问题,我已经这样做了),然后对于所有选定的项目,BookingSlip.aspx应该执行,也就是说,每个预订单都应该被打印,并且约束条件是,用户只看到一次 Windows 打印对话框,一旦他选择了适当的选项,所有项目(应该打印选择的项目)。

我想到了两件事。

  1. 对于网格视图中的每个选定项目,打开BookingSlip.aspx?BN={theSelectedBookingNumber}然后一次性打印它们。问题在于,如果用户选择 10、12 或 20,那么在他们的浏览器中同时打开 12 个页面非常令人不快。另一个问题是我必须window.Print在单个页面上调用,并且窗口会弹出打印对话框 10、12 或 20 次(取决于选择的项目和打开的页面),这是我不想要的。

  2. 其次是用类似的东西打开一个页面BookingSlip.aspx?BN={theFirstSelectedBookingNumber},打印它,然后不要打开另一个页面,只需使用Server.Transfer或类似的东西打开BookingSlip.aspx?BN={theSecondSelectedBookingNumber}等等。
    问题是,如果我Window.Print在每次页面传输时调用,用户每次仍然会出现一个打印对话框,这是我不想要的。

所以,基本上我正在寻找一种方法,用户可以在打印对话框中指定默认值,并且使用这些默认值,将打印来自 gridview 的每个(选定)项目,而不是来自 gridview 的项目,而是页面BookingSlip.aspx将是为每个选定的预订号打印。

那么,有没有办法让所有这些打印件排队?或者除了我写的两个之外还有其他方法吗?如果我有点模糊,请发表评论,我会澄清。

4

1 回答 1

0

您能否重构该BookingSlip.aspx页面,以便您可以传递多个预订号,然后该页面将显示每个提供的预订号的预订单?

这样,您只需打印一个网页而不是多个网页。

为了确保每个预订都出现在它自己的页面上,您可以page-break-after在合适的容器元素上使用 CSS 属性(<div>...</div>也许是一个)。有关在此处page-break-after查看的基本教程。

于 2012-08-29T14:03:49.213 回答