【发布时间】: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