我有一个 ASP.net 页面,它使用 eeplus 库 ( http://epplus.codeplex.com/ ) 创建了一个 excel 文件。我的问题是我创建了一个非常大的文件。需要时间来完成并向客户展示。我寻找一种方法来显示一种创作进度条。
目前,客户端单击并等待文件创建,所以我不能真正展示一些东西。
我有一个 ASP.net 页面,它使用 eeplus 库 ( http://epplus.codeplex.com/ ) 创建了一个 excel 文件。我的问题是我创建了一个非常大的文件。需要时间来完成并向客户展示。我寻找一种方法来显示一种创作进度条。
目前,客户端单击并等待文件创建,所以我不能真正展示一些东西。
一个快速的解决方案是使用 Ajax.NETUpdateProgress
控件。只需显示一个在服务器处理时旋转的 GIF。
你想要做的实际上非常复杂。您可能只想展示一个旋转的车轮 gif 或其他东西,以免自己头疼。
但是,如果您喜欢冒险,请继续阅读。
要使用进度条,您需要创建一种方法来衡量您的任务完成的百分比。这通常涉及某种增量器,该增量器根据您创建的行/列/任何内容的总数来衡量。我不知道您使用的是什么语言,所以这里有一些伪代码可以帮助您:
var totalRows = 100;
var processedRows = 0;
var progress = 0;
while( processedRows < totalRows ){
Process_A_Row();
processRows++;
progress = processedRows / totalRows;
StoreProgressSomewhereForPolling();
}
因此,这是您跟踪进度的基本机制。在客户端上,您需要设置一种方法来轮询进度变量的值。这会变得很混乱,因为您很快就会了解到您需要一种方法来隔离每个单独请求的进度变量。由您决定如何实现这一点——有很多方法可以做到这一点。我看到的一种解决方案将进度值存储在由用户名键入的静态字典中,以便客户端可以使用 webmethods 轻松轮询它。