2016-06-21 47 views
0

我在ASP.NET页面的UpdatePanel内有一个按钮。这里是我的UpdatePanel已禁用的按钮不会在UpdatePanel中提交回传

<asp:UpdatePanel ID="UpdateToolbar" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <table> 
      <tr> 
       <td> 
        <div id="divPDFBtn"> 
         <asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF" 
         Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" /> 
        </div> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="btnPrint" /> 
    </Triggers> 
</asp:UpdatePanel> 

当我试图禁用按钮OnClientClick它不会做PostBack

这里是比如我PDFClick()功能

// Works (does post back and code behind executes)) 
<script type="text/javascript"> 
    function PDFClick() { 
     document.getElementById("btnPrint").value = "Working..."; 
     return true; 
    }; 
</script> 

// Doesn't work (JS executes, but code behind didn't execute) 
<script type="text/javascript"> 
    function PDFClick() { 
     document.getElementById("btnPrint").value = "Working..."; 
     document.getElementById("btnPrint").disabled = true; 
     return true; 
    }; 
</script> 

这背后是我的代码的。我需要做的背一些东西,并打开新的窗口,它的完成之后:

protected void btnPrint_Click(object sender, EventArgs e) 
{ 
    Response.Write("<script>"); 
    Response.Write(String.Format("window.open('{0}','_blank')", ResolveUrl("PrintPage.aspx"))); 
    Response.Write("</script>"); 
} 

请告知我如何可以禁用我的按钮,后面的代码实现。

谢谢!

+0

工作的代码和不工作的代码有什么不同?他们看起来和我一样。 – ConnorsFan

+0

对不起,我忘了删除1行。现在检查。我现在会尝试下面的答案。谢谢! – Bryuk

回答

2

可以与setTimeout异步禁用按钮:

<script type="text/javascript"> 
    function PDFClick(btnPrint) { 
     btnPrint.value = "Working..."; 
     setTimeout(function() { btnPrint.disabled = true; }, 10); 
     return true; 
    }; 
</script> 

document.getElementById呼叫可以从PDFClick通过在OnClientClick经过参考到按钮元件与this关键字中删除:

OnClientClick="if (PDFClick(this)) { return true; } else { alert('2'); }" 
+0

哇!好戏!它的作品:)谢谢! – Bryuk

0

在按钮上添加ClientIDMode="Static"

<asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF" Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" ClientIDMode="Static" /> 
+0

没有工作.... – Bryuk