2016-06-21 5 views
0

У меня есть кнопка внутри UpdatePanel на моей странице ASP.NET. Вот мой 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 путем передачи ссылки на кнопочном элемент с this ключевым словом в OnClientClick:

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

Смежные вопросы