Нужен прогрессбар в GridView ASP.Net - PullRequest
2 голосов
/ 21 января 2010

Пожалуйста, посмотрите на это изображение Сетка с указанием ожидающих работ http://softwaregenius.net/myimages/grid.png

На рисунке показан вид сетки с некоторыми столбцами на странице ASPX (.net 2.0). Здесь, после получения списка всех акций, я должен создать счета, а затем преобразовать эти счета в PDF. То, что я хочу, это индикатор выполнения в столбце Статус. Вместо отображения статуса «Ожидание» или «Завершено» я хочу показать индикатор выполнения, чтобы выделить процесс создания счета и PDF.

У вас есть идеи, как я могу это сделать. Если вы все еще не понимаете, рассмотрите возможность загрузки страницы изображений в Orkut, на которой отображается индикатор выполнения при загрузке изображения.

Спасибо, что поделились своим драгоценным временем ...

Ответы [ 4 ]

8 голосов
/ 29 января 2010

Чтобы показать фактический прогресс, вам необходимо получить статус с сервера и обновить пользовательский интерфейс на стороне клиента. Одним из способов является использование HTTP-обработчиков и AJAX с jQuery.

1. Инициировать создание счета-фактуры

$("#btnCreateInvoice").click(function() {             
       $.ajax({ type: "POST",  url: "YourHttpHandler.ashx",
       contentType: "text/html; charset=utf-8",
       dataType: "html",  
       success: function(data) { UpdateStatus-Initialize some progressbar plugin }
       });
    });

2. Опрос

Что вам нужно сделать, это опросить сервер с интервалом 't' и получить статус. Для этого нам нужно вызывать функцию с интервалом 't', которая инициировала бы вызов AJAX HTTPHandler для получения статуса.

$(function() {
  setInterval(update, 't');
});

function updateStatus() {
  $.ajax({ type: "POST",  url: "GetStatusHandler.ashx",
       contentType: "text/html; charset=utf-8",
       dataType: "html",  
       success: function(data) { UpdateStatus - Update some progressbar plugin }
       });
}

3. Управление статусом на стороне сервера

В вашем случае может возникнуть ситуация, когда может быть несколько активных счетов, поэтому вам потребуется обновлять / поддерживать статус всех этих записей при каждом запросе AJAX.

Также я не уверен, что вы можете использовать элементы управления индикатора выполнения на стороне сервера ASP.NET с этой техникой, поскольку вам нужно будет обновить их на стороне клиента.

2 голосов
/ 21 января 2010

Это похоже на вопрос, который я видел недавно " Загрузка больших файлов в .NET "

Результатом всего этого стало то, что вы должны использовать метод AJAX для периодического обновления индикатора выполнения. Для этого уже существуют некоторые элементы управления, поскольку в ответе на этот вопрос предлагается библиотека JavaScript / Flash SWFUpload .

Лично я бы заново изобрел колесо и написал свой собственный сервер AJAX и запросы клиентов на обновление формы, но это требует некоторых исследований.

2 голосов
/ 27 января 2010

Я нашел пару хороших элементов управления Progress Bar здесь и здесь . Оба они кажутся относительно простыми в использовании.

Сложнее всего выяснить, как далеко вы находитесь в процессе обработки. Предполагая, что у вас есть эта информация, вы можете просто обернуть GridView в UpdatePanel, который запускает элемент управления Timer, который отправляет обратно каждые n секунд.

1 голос
/ 21 января 2010

Это трудно сделать.

Причина загрузки изображения с индикатором выполнения состоит в том, что клиент знает, сколько данных он отправил на сервер .

Но в этом случае клиент не знает, как далеко сервер , и серверу сложно сказать клиенту.

У меня нет решения, но я просто хочу сказать, что оно не простое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...