window.print onclientclick阻止代码隐藏中的onclick

时间:2015-04-22 13:38:18

标签: javascript c# asp.net webforms code-behind

在调用window.print()之后,我有一个页面需要通过OnClick对页面进行回发。我花了几个小时寻找解决方案,但到目前为止还没有找到合适的组合。我设置了一个测试页面,以确保没有其他javascript干扰。这是代码

<asp:Button ID="Print" runat="server" Text="Print" OnClientClick = "window.print();return true;" UseSubmitBehavior="false" OnClick="Print_Click" />

protected void Print_Click(object sender, EventArgs e)
{
   Response.Write("Clicked");
}

这是浏览器中的渲染按钮:

<input id="Print" class="button" type="button" onclick="window.print();return true;__doPostBack('Print','')" value="Print" name="Print">

回发没有发生,并且没有调用print_click。我还尝试在page_load

上的代码中添加onclientclick

我很感激任何帮助 - 我想我已经查看了100多个搜索结果。 谢谢, 朱迪

2 个答案:

答案 0 :(得分:0)

<asp:Button ID="Print" runat="server" Text="Print" UseSubmitBehavior="false" OnClick="Print_Click" />

您是否尝试删除OnClickClick以查看是否正确触发了回发?

如果这样可行,那么我会尝试手动添加客户端打印:

var originalClick = $('#Print').click();

$('#Print').click(function(){
   window.print();
   originalClick();
});

我认为protected级别没问题,但为了以防万一,可以尝试public

答案 1 :(得分:0)

我认为这里的部分问题出在Firefox上。一位同事给了我一些有点不同的代码,它在FF中不起作用,但它适用于IE和Chrome。 这是他给我的东西 - 其中一部分涉及隐藏         function handlePrintClick(){             window.print();             var buttonId =“&lt;%= Print.ClientID%&gt;”;             var buttonElm = document.getElementById(buttonId);             buttonElm.click();                 }