需要GridView ASP.Net中的进度条

时间:2010-01-21 09:39:48

标签: asp.net progress-bar

请看一下这张图片 Grid Showing Pending Work http://softwaregenius.net/myimages/grid.png

该图像显示了一个包含ASPX页面上某些列的网格视图(.net 2.0)。获取所有股票清单后,我必须创建发票,然后将这些发票转换为PDF。我想要的是状态列中的进度条。我没有显示待处理或已完成状态,而是显示进度条以突出显示发票和pdf创建过程。

你有什么想法,我怎么能这样做。如果您仍然不明白,请考虑在Orkut中上传图片页面,该图片会在图片上传时显示进度条。

感谢您分享宝贵的时间......

4 个答案:

答案 0 :(得分:8)

要显示实际进度,您需要从服务器获取状态并在客户端更新UI。一种方法是使用HTTP Handler和AJAX与jQuery。

<强> 1。启动InvoiceCreation

$("#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'时间间隔调用一个函数,该函数将启动对HTTPHandler的AJAX调用以获取状态。

$(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服务器端进度条控件,因为您需要在客户端更新它们。

答案 1 :(得分:2)

这类似于我刚才看到的问题“Upload large files in .NET

这一切的结果是你应该使用AJAX方法间歇性地更新进度条。有些控件已经存在,因为该问题的答案表明了JavaScript / Flash库SWFUpload

就个人而言,我会重新发明轮子并编写我自己的AJAX服务器和客户端请求来更新表单,但这需要一些研究。

答案 2 :(得分:2)

我找到了一些不错的进度条控件herehere。它们似乎都相对容易使用。

困难的部分是弄清楚你目前处理的距离。假设您有这些信息,您可以简单地将GridView包装在一个UpdatePanel中,该控件会在每n秒发回一次的Timer控件上触发。

答案 3 :(得分:1)

这是一项难以实现的目标。

图片上传有进度条的原因是因为客户知道它已向服务器发送了多少数据

但在这种情况下,客户端不知道服务器的距离,服务器很难告诉客户端。

我没有解决方案,但我只想说这不是直截了当的。