Что вам следует знать, так это то, что вы не можете проверить статус загрузки файла, используя стандартный элемент управления FileUpload. Что вы можете сделать, это загрузить файл на сервер, а затем подключиться к нему с помощью ODBC и начать чтение и вставку строк в базу данных асинхронно (с помощью запроса ajax на страницу или с помощью службы сценариев).
Что касается индикатора выполнения, вы должны просто использовать CSS-индикатор прогресса (простой пример можно найти по адресу: http://css -tricks.com / examples / ProgressBars / ).
Затем вы должны создать службу сценариев (с использованием веб-службы) с методом, который может возвращать состояние вашего прогресса с сервера:
Ваш * .asmx файл должен содержать что-то вроде:
[WebMethod]
public int GetStatus()
{
int progress = 0; // in percents
// your server-side code here
return progress;
}
Ваша страница aspx должна содержать что-то вроде:
<asp:ScriptManager runat="server" ID="ScriptManager">
<Services>
<asp:ServiceReference Path="~/services/import.asmx" InlineScript="false" />
</Services>
</asp:ScriptManager>
Затем вы сможете периодически вызывать этот метод из JavaScript (например, каждую секунду, используя setTimeout) и обновлять ширину индикатора выполнения простым JavaScript или jQuery:
var tout, service;
function UpdateStatus() {
if (tout != null)
clearTimeout(tout);
if (service == null)
service = new namespace.here.serice_class_here();
service.GetStatus(onSuccess, onFailure);
}
function onSuccess(result) {
// update the width of the progress with result (the integer value of the progress)
progress_bar.style.width = percent + "%";
// call the method again
tout = setTimeout("UpdateStatus()", 1000);
}
function onFailure(error) {
alert(error.get_message());
}
Вы можете расширить функцию JavaScript onSuccess, а по завершении процесса (возвращаемое значение равно 100%) вы можете перенаправить пользователя на другую страницу или отобразить информацию или кнопку в зависимости от ваших потребностей.
Надеюсь, это поможет!