繁体   English   中英

为什么AsyncFileUpload在gridview上触发RowCommand事件?

[英]Why AsyncFileUpload fires RowCommand event on gridview?

我已经在互联网上搜索了将近2天,以找到解决方案,但是仍然没有任何效果。

我在页面上有2个用户控件。 首先包含AsyncFileUpload:

 <cc1:AsyncFileUpload runat="server" ID="fuExcelUploader" Width="400px" 
                                UploadingBackColor="#CCFFFF" ThrobberID="myThrobber" 
                                CompleteBackColor="#CEF6CE" />

第二个具有带有下载按钮的templatefield的gridview(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上传新文件后,都会使用相同的“ ErrorClick” CommandName和CommandArgument,所以我正在获取带有文件的窗口以再次下载(页面已锁定)。 可能是因为linkbutton和asyncfileupload都不会刷新整个页面(是相同的回发吗?)。

您是否知道为什么在使用asyncfileupload控件上传时会触发rowcommand或如何解决该问题。 在这种情况下,我不使用udpatepanels。


单击“链接”按钮并处理上载后,将触发OnRowComand事件。 注册两次下载代码会发生错误。
LinkBut​​ton中“ href”的脚本会以某种方式影响此结果。 我使用ImageButton触发下载,并使用LinkBut​​ton执行ImageButton的事件单击。

ASPX

ImageButton-> Style =“ display:none;”


ASPX.CS-RowDataBound

LinkButton.Attributes.Add("OnClick", "$(document.getElementById('" + ImageButton.ClientID + "')).click(); return false;");

抱歉,我的英语太糟糕了。 我用谷歌翻译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM