2016-06-21 13 views
0

Ich habe eine Taste innerhalb UpdatePanel auf meiner ASP.NET Seite. Hier ist mein UpdatePanelDisabled Button sendet kein Postback in 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> 

Wenn ich versuche Taste zu deaktivieren OnClientClick es nicht PostBack

macht Hier Beispiel meiner PDFClick() Funktion

// 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> 

Dies ist mein Code zurück. Ich brauche ein paar Sachen auf dem Rücken zu tun und neue Fenster zu öffnen, nachdem es fertig ist:

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>"); 
} 

Bitte raten, wie ich meine Taste deaktivieren und Code hinter erreichen.

Danke!

+0

Was ist der Unterschied zwischen dem Code, der funktioniert und dem, der nicht funktioniert? Sie sehen gleich aus. – ConnorsFan

+0

Entschuldigung, ich habe vergessen, eine Zeile zu entfernen. Jetzt prüfen. Ich werde jetzt die Antworten unten versuchen. Vielen Dank! – Bryuk

Antwort

2

können Sie auf die Schaltfläche asynchron deaktivieren mit setTimeout:

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

Der Aufruf von document.getElementById kann von PDFClick, indem ein Verweis auf das Button-Element mit dem this Schlüsselwort in OnClientClick entfernt werden:

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

Wow! Guter Trick! Es funktioniert :) Danke! – Bryuk

0

Fügen Sie ClientIDMode="Static" über die Schaltfläche

hinzu
+0

Hat nicht funktioniert .... – Bryuk

Verwandte Themen