Обновление прогресса при обработке после загрузки файла
У меня есть веб-форма с двумя элементами управления загрузкой и несколькими текстовыми полями. При нажатии кнопки файлы загружаются, а затем обрабатываются. Загрузка не занимает много времени, но обработка делает. Я знаю, что у меня не может быть элемента управления загрузкой на панели обновлений, поэтому я не могу понять, как использовать элемент управления обновлением, чтобы показать мой прогресс.
Моя страница с элементом управления updateprogress работает следующим образом:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DynamicLayout="true">
<ProgressTemplate>
<div class="LOADING">
Your data is being processed<br />
<br />
<img src="/images/loading.gif" /><br />
<br />
Please wait...
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<div class="addFixture">
<asp:ValidationSummary ID="ValidationSummary1" ValidationGroup="fixture" runat="server" />
<label>
Type
<asp:DropDownList ID="ddlType" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text=""></asp:ListItem>
</asp:DropDownList>
<label>
Date
</label>
<asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
<label>
Name 1</label>
<asp:TextBox ID="txtName1" runat="server"></asp:TextBox>
<label>
Name 2
<asp:TextBox ID="txtName2" runat="server"></asp:TextBox>
<label>
First XML File</label>
<asp:FileUpload ID="firstFileUp" runat="server" />
<br />
<label>
Second Xml File</label>
<asp:FileUpload ID="secondFileUp" runat="server" />
<br />
<br />
<asp:Button ID="SubmitButton" runat="server" CausesValidation="true" Text="Submit" OnClick="SubmitButton_Click" />
<asp:Label ID="ErrorMessageLabel" runat="server" EnableTheming="false"></asp:Label>
</div>
</ContentTemplate>
</asp:UpdatePanel>
Я искал это, но люди, кажется, пытаются получить прогресс загрузки файла, а не обработку.
Кто-нибудь может помочь?
2 ответа
Удалите UpdatePanel, так как вы не можете использовать элементы управления FileUpload внутри него. Добавьте в свойство SubmitButton OnClientClick со следующим значением: OnClientClick="showProgress()"
Также добавьте на страницу javascript функцию ниже:
function showProgress() {
var updateProgress = $get("<%= UpdateProgress1.ClientID %>");
updateProgress.style.display = "block";
}
Кстати, рассмотрите возможность использования некоторого асинхронного элемента управления загрузкой файлов, например, из библиотеки Ajax Control Toolkit.
Вы можете использовать UpdatePanel и FileUpload, если вы используете ASyncFileUploadControl. Это работает довольно хорошо. Убедитесь, что вы загрузили последнюю версию, поскольку в предыдущих выпусках было несколько проблем.