我在互联网上搜索了差不多2天才找到解决方案,但还没有任何效果。
我在页面上有2个用户控件。首先包含AsyncFileUpload:
<cc1:AsyncFileUpload runat="server" ID="fuExcelUploader" Width="400px"
UploadingBackColor="#CCFFFF" ThrobberID="myThrobber"
CompleteBackColor="#CEF6CE" />
并且第二个具有带有下载按钮(excel文件)的模板字段的网格视图
<asp:TemplateField HeaderText="Report with errors" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:LinkButton id="lbError" CommandName="ErrorClick" runat="server" CommandArgument='<%# Eval("Report.Id") %>' ValidationGroup="other2357"><asp:Image ID="imgReport" runat="server"
ImageUrl="~/App_Themes/Default/Images/icons/page_excel.png" ImageAlign="Middle" Visible='<%# Convert.ToInt32(Eval("Report.Id")) > 0 %>' /></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
在RowCommand中如果e.CommandName = ErrorClicked我有这样的代码用于下载文件
Response.Clear();
Response.Buffer = true;
Response.AddHeader(
"Content-Disposition", string.Format("attachment; filename={0}", "Error_report_" + this.ErrorClicked + ".xlsx"));
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats";
// Response.Cache.SetCacheability(HttpCacheability.Private);
Response.BinaryWrite(value); //value is byte[];
Response.End();
它完美无缺我可以使用asyncfileupload上传文件,然后点击gridview等上的图标下载报告,但是有一个问题。
每当我点击gridview上的下载图标时,弹出下载文件对话框,我可以保存/打开/取消但无论我做什么,在我尝试使用asyncfileupload上传新文件后,同样的RowCommand事件被触发同样的'ErrorClick 'CommandName和CommandArgument,所以我得到那个窗口,文件再次下载(页面被锁定)。可能是因为linkbutton和asyncfileupload都没有刷新整个页面(它是否与回发相同?)。
您是否知道为什么在使用asyncfileupload控件上传期间触发rowcommand或如何解决该问题。在这种情况下我不使用udpatepanels。
答案 0 :(得分:-1)
单击“链接”按钮并处理上载后会触发OnRowComand事件。注册两次下载代码会出错。
LinkButton中“href”的脚本以某种方式影响了这个结果。我使用ImageButton来触发下载,使用LinkButton来执行ImageButton的事件点击。
ASPX
ImageButton - &gt; Style =“display:none;”
ASPX.CS - RowDataBound
LinkButton.Attributes.Add("OnClick", "$(document.getElementById('" + ImageButton.ClientID + "')).click(); return false;");
抱歉,我的英语太可怕了。我使用谷歌翻译。