【问题标题】:AsyncPostBackTrigger for button btnCsv calling multiple times and downloading same Csv file multiple time in one click用于按钮 btnCsv 的 AsyncPostBackTrigger 多次调用并一键多次下载相同的 Csv 文件
【发布时间】:2018-02-23 14:39:21
【问题描述】:

我的页面上有两个按钮,它们可以多次触发 AsyncPostBack 并一键多次下载相同的 Csv 文件。

      <asp:UpdatePanel ID="UpdatePanel8" runat="server" UpdateMode="Conditional" Visible="true">
                        <ContentTemplate>
                            <asp:ImageButton ID="btnpdf" ClientIDMode="Static" ImageUrl="EPHTimages/pdf.png"
                                runat="server" OnClientClick="ShowDropDownPDF();" Style="width: 0px; height: 0px;"
                                OnClick="btnpdf_Click" data-toggle="tooltip" title="Export PDF" />
                            <asp:ImageButton ID="btnCsv" ImageUrl="EPHTimages/csv.png" runat="server" OnClientClick="ShowDropDown();"
                                Style="width: 0px; height: 0px;" ClientIDMode="Static" OnClick="btnCsv_Click"
                                data-toggle="tooltip" title="Export CSV" />
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="btnpdf" EventName="click" />
                            <asp:AsyncPostBackTrigger ControlID="btnCsv" EventName="click" />
                        </Triggers>
                    </asp:UpdatePanel>

用于创建 CSV 的 Java 脚本代码

     $(document).ready(function () {
        var app = Sys.Application;
        app.add_init(ApplicationInit);
        function ApplicationInit(sender) {
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            if (!prm.get_isInAsyncPostBack()) {
                prm.add_endRequest(EndRequest);
            }
        }
        function BeginRequestHandler(sender, args) {
            debugger
            PostbackControl = args.get_postBackElement();
        }
        function EndRequest(sender, args) {
            var activetabname = $("div [class='tab-pane active']").attr('name');
            if (PostbackControl.id == 'btnpdf' & activetabname == "HideAndShowSummarize") {
                var iframe = document.createElement('iframe');
                iframe.src = 'ExportPDFForViz.aspx';
                iframe.style.display = 'none';
                document.body.appendChild(iframe);
                if ($("#hidDropValue").val() != "HideAndShowSummarize") {
                    var delay = 9000; //1 seconds
                    setTimeout(function () {
                        $("#overlay").hide();
                        $(".web_dialog_overlay").hide();
                        $("#divProgress").hide(); $(".web_approve").hide();
                    }, delay);
                }
                else {
                    $("#overlay").hide();
                    $(".web_dialog_overlay").hide();
                    $("#divProgress").hide(); $(".web_approve").hide();
                }

            }
            else if (PostbackControl.id == 'btnCsv') {
                var iframe = document.createElement('iframe');
                iframe.src = 'MapExportCsv.aspx';
                iframe.style.display = 'none';
                document.body.appendChild(iframe);
                return;

            }

        }
    });

我正在使用其他 html 按钮控件启动更新面板按钮 (btnCsv) 控件的单击事件。

<a href="" id="btnCsvlink" onclick="" style="color: Black" aria-label="Export">Export</a>

调用 btnCsv 的 Java 脚本 $("#btnCsvlink").click(function () { event.preventDefault(); $("#btnCsv").click(); return false; });

【问题讨论】:

  • 我会把“href”去掉——浏览器在使用空白href和不存在href时会表现得很奇怪。不是说这是错误,但这是我的惯例。没有空的 onclick 属性也没有意义

标签: javascript jquery asp.net asp.net-ajax


【解决方案1】:

把你的javascript改成

$("#btnCsvlink").click(function (e) {
     e.preventDefault();
     $("#btnCsv").click();
     return false;
 });

如果没有 event 参数,我认为您实际上并没有阻止默认行为。

另外,添加

ChildrenAsTriggers="False" 

到您的更新面板,以防万一。

【讨论】:

  • $("#btnwindpdf") 点击事件发生在页面加载事件上。应该准备好文件。
【解决方案2】:

$("#btnwindpdf") 在页面加载事件中。应该准备好文件。

【讨论】:

    猜你喜欢
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多