Почему AsyncFileUpload запускает событие RowCommand в gridview? - PullRequest
0 голосов
/ 12 марта 2012

Я почти 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 и т. Д., Но есть одна проблема.

Всякий раз, когда я нажимаю на иконку загрузки в окне сетки, появляется диалоговое окно загрузки файла, я могу сохранить / открыть / отменить, но что бы я ни делал, после того, как я пытаюсь загрузить новый файл с помощью asyncfileupload, происходит то же событие RowCommand с тем же «ErrorClick» 'CommandName и CommandArgument, поэтому я получаю это окно с файлом для загрузки снова (и страница заблокирована). Это может быть потому, что ни кнопка ссылки, ни asyncfileupload не обновляют всю страницу (это один и тот же постбэк?).

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

1 Ответ

0 голосов
/ 15 сентября 2014


Событие OnRowComand наступает при нажатии кнопки Link и после обработки загрузки.Ошибка происходит при двойной регистрации кода загрузки.
Сценарий "href" в LinkButton как-то влияет на этот результат.Я использовал ImageButton для запуска загрузки, а LinkButton для запуска события события ImageButton.

ASPX

ImageButton -> Style = "display: none;"


ASPX.CS - RowDataBound

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

Извините, мой английский ужасен.Я использую Google Translate.

...