我在SqlServer(2005+)中有SP
使用cursor
并做一些事情(10,000行)
我需要像进度条这样的东西(在我的c#网站中查看。)。
我可以将10,000除以100,这样每1000条记录就可以了(使用sql print命令):process of another 1000 is done !!!
但是我想在我的asp.net网站上看到那个印刷品(每个新印刷品)。
如何捕获打印命令/或者有更好的方法吗?
答案 0 :(得分:1)
我们用来实现类似事情的过程稍微复杂一点,但确实有效。
我们创建了一个具有多种方法的Web服务,例如;
[SoapDocumentMethod(OneWay = true), WebMethod]
public void StartUpdate(string reference)
[WebMethod]
public ProcessStatus GetProcessStatus(string reference)
对asynch webmethod的调用将启动进程运行并传入参考编号以标识自身。这反过来调用了一个存储过程,该过程使用游标迭代的更新来更新另一个表'reference','count'和'status'
GetProcessStatus然后将传入此引用并传回当前计数和状态。如果状态已完成,我们可以继续,或者,此时您可以使用“计数”来更新状态。一个例子;
protected void Page_Load(object sender, EventArgs e)
{
this.JavaScript.Text = string.Format("<script>setTimeout(\"{0}\", {1});</script>",
this.Page.GetPostBackClientEvent(this.btnRefresh, ""), 3000);
ProcessStatus status= Class.GetProcessStatus(reference);
lblCount.Text = status.Count.ToString();
if (import.Status == (int)ProcessStatus.Status.Complete)
{
Globals.GoUrl("/Import/File/Map.aspx");
}
}
希望有所帮助。