好吧,问题比较理论,所以代码不多。我所拥有的是一个页面BookingSlip.aspx
和其他页面BookingDetails.aspx
,其中有一个显示预订详细信息的网格视图,该网格的第一个列是链接到的超链接字段BookingSlip.aspx
,将预订号作为查询字符串传递。在其中BookingSlip.aspx
有一个btn_Print
我简单调用的按钮,它Window.Print
只是弹出用于打印的 Windows 对话框,当用户执行所需的步骤(单击确定,选择打印机等)时,Windows(或任何操作系统用户正在使用)句柄其余的部分。直到现在一切都很好。
但是我必须做的是允许用户选择多个预订号码BookingDetails.aspx
(通过在gridview中添加一个复选框列,这不是问题,我已经这样做了),然后对于所有选定的项目,BookingSlip.aspx
应该执行,也就是说,每个预订单都应该被打印,并且约束条件是,用户只看到一次 Windows 打印对话框,一旦他选择了适当的选项,所有项目(应该打印选择的项目)。
我想到了两件事。
对于网格视图中的每个选定项目,打开
BookingSlip.aspx?BN={theSelectedBookingNumber}
然后一次性打印它们。问题在于,如果用户选择 10、12 或 20,那么在他们的浏览器中同时打开 12 个页面非常令人不快。另一个问题是我必须window.Print
在单个页面上调用,并且窗口会弹出打印对话框 10、12 或 20 次(取决于选择的项目和打开的页面),这是我不想要的。其次是用类似的东西打开一个页面
BookingSlip.aspx?BN={theFirstSelectedBookingNumber}
,打印它,然后不要打开另一个页面,只需使用Server.Transfer
或类似的东西打开BookingSlip.aspx?BN={theSecondSelectedBookingNumber}
等等。
问题是,如果我Window.Print
在每次页面传输时调用,用户每次仍然会出现一个打印对话框,这是我不想要的。
所以,基本上我正在寻找一种方法,用户可以在打印对话框中指定默认值,并且使用这些默认值,将打印来自 gridview 的每个(选定)项目,而不是来自 gridview 的项目,而是页面BookingSlip.aspx
将是为每个选定的预订号打印。
那么,有没有办法让所有这些打印件排队?或者除了我写的两个之外还有其他方法吗?如果我有点模糊,请发表评论,我会澄清。