Отключенная кнопка не передает постбэк в UpdatePanel

У меня есть кнопка внутриUpdatePanel на моемASP.NET Page. Вот мой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>");
}

Посоветуйте, пожалуйста, как я могу отключить свою кнопку и найти код позади

Спасибо!

 ConnorsFan22 июн. 2016 г., 00:38
В чем разница между кодом, который работает, и тем, который не работает? Они выглядят одинаково для меня.
 Bryuk22 июн. 2016 г., 16:26
Извините, я забыл удалить 1 строку. Проверь сейчас. Сейчас я попробую ответы ниже. Спасибо!

Ответы на вопрос(2)

добавлять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" />
 Bryuk22 июн. 2016 г., 16:31
Не работал ....
Решение Вопроса

Вы можете отключить кнопку асинхронно с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'); }"
 Bryuk22 июн. 2016 г., 16:33
Вот Это Да! Хороший трюк! Это работает :) Спасибо!

Ваш ответ на вопрос