【问题标题】:Disabled button doesn't submit postback in UpdatePanel禁用按钮不会在 UpdatePanel 中提交回发
【发布时间】:2023-04-02 00:30:01
【问题描述】:

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

请告知我如何禁用我的按钮并访问后面的代码。

【问题讨论】:

    标签: javascript c# asp.net button updatepanel


    【解决方案1】:

    您可以使用setTimeout 异步禁用按钮:

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

    通过在OnClientClick 中使用this 关键字传递对按钮元素的引用,可以从PDFClick 中删除对document.getElementById 的调用:

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

    【讨论】:

      【解决方案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" />
      

      【讨论】:

        猜你喜欢
        • 2014-01-03
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-30
        • 2013-06-11
        • 2014-10-28
        • 1970-01-01
        相关资源
        最近更新 更多