2012-03-12 4 views
0

Я искал почти 2 дня в Интернете, чтобы найти решение, но пока ничего не работает.Почему AsyncFileUpload запускает событие RowCommand в gridview?

У меня есть 2 пользовательских элемента управления на странице. Первый содержит AsyncFileUpload:

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

и второй имеет GridView с такой TemplateField с кнопкой загрузки (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, поэтому я снова получаю это окно с файлом для загрузки (и страница заблокирована). Возможно, это связано с тем, что ни ссылка, ни asyncfileupload не обновляют всю страницу (это одна и та же обратная передача?).

У вас есть идеи, почему команда rowcommand запускается при загрузке с помощью asyncfileupload или как решить эту проблему. В этом случае я не использую udpatepanels.

+0

Является ли AsyncFileUpload внутри UpdatePanel, у которого нет параметра UpdateMode, установленного в «Условный»? – Lloyd

+0

Нет, это вне обновления. Пытался добавить оба элемента управления в updatepanel, но проблема все еще существует. – Kostrzak

+0

Установлен ли параметр UpdatePanels UpdateMode условным? – Lloyd

ответ

-1


Событие OnRowComand запускается при нажатии кнопки Linkbutton и после обработки загрузки. Произошла ошибка, дважды зарегистрировав код загрузки.
Скрипт «href» в LinkButton каким-то образом влияет на этот результат. Я использовал ImageButton для запуска загрузки, а LinkButton - для запуска клика изображения ImageButton.

ASPX

ImageButton -> Style = "дисплей: нет;"


ASPX.CS - RowDataBound

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

К сожалению, мой английский ужасен. Я использую Гугл переводчик.

Смежные вопросы