【问题标题】:Need progressbar in GridView ASP.Net需要 GridView ASP.Net 中的进度条
【发布时间】:2011-01-07 16:00:39
【问题描述】:

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

该图像显示了一个网格视图,其中包含 ASPX 页面 (.net 2.0) 上的一些列。在获得所有库存清单后,我必须创建发票,然后将这些发票转换为 PDF。我想要的是状态列中的进度条。我不想显示 Pending 或 Completed 状态,而是希望显示一个进度条来突出显示发票和 pdf 创建的过程。

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

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

【问题讨论】:

  • 您的网格单元格可以由所有者绘制吗?如果是这样,只需使用两个矩形和一些文本自己绘制进度条。
  • 但是每次我绘制进度条时都会导致页面回发。我不想要那个。

标签: asp.net progress-bar


【解决方案1】:

这是一件很难完成的事情。

图片上传之所以有进度条,是因为客户端知道它向服务器发送了多少数据。

但是在这种情况下,客户端不知道服务器有多远,服务器很难告诉客户端。

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

【讨论】:

    【解决方案2】:

    这类似于我前段时间看到的一个问题“Upload large files in .NET

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

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

    【讨论】:

      【解决方案3】:

      我发现了两个不错的进度条控件herehere。两者看起来都比较容易使用。

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

      【讨论】:

      • 谢谢哥们!你提供了这么好的链接。
      • 如果我创建了自己的控件,你们能否告诉我如何与客户端交互。例如。支持我创建了自己的进度条控件,并且当进度条继续移动时,我触发事件说“ProgressChanged”。那么我如何在客户端异步处理这个事件。我已经尝试过实现这个概念,但没有成功。
      • 我需要的东西作为回调过程。
      【解决方案4】:

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

      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' 间隔调用一个函数,该函数将启动对 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 服务器端进度条控件,因为您需要在客户端更新它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多