【发布时间】:2015-09-04 19:22:37
【问题描述】:
我正在使用带有 C# 的 VS 2005。我有一个大约需要 25 到 30 秒的查询,并用水晶报告显示结果。
我想在查询执行时显示进度条。
我的情况与Progress bar for long running task in C#相同
我按照该帖子中的步骤操作,但进度条为空白。
请查看我的代码并告知需要什么。
private string orderby, startDate, endDate, brandName;
ReportDocument rpt;
private BackgroundWorker bgw;
private void SearchFunction()
{
orderby = cboOrderBy.Text;
startDate = txtFromDate.Text;
endDate = txtToDate.Text;
brandName = txtBrandName.Text;
bgw = new BackgroundWorker();
bgw.WorkerReportsProgress = true;
bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
bgw.RunWorkerAsync();
}
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
dt = obj1.getData1(orderby, startDate, endDate, brandName);
}
void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//After completing the job.
MessageBox.Show(@"Finished");
if (dt.Rows.Count > 0)
{
//some code for crystal report like
rpt = new myReport();
rpt.SetDataSource(dt);
crystalReportViewer1.ReportSource = rpt;
crystalReportViewer1.Refresh();
}
else
{
MessageBox.Show("No record found !");
}
}
【问题讨论】:
-
在 DoWork 方法中将数据分配给数据表后添加 ReportProgress 不会提供所需的输出。由于查询执行时间过长,进度条在很长一段时间后开始填充。
-
期望的输出是什么?更新进度是你的责任,因为你只是调用一个函数,你唯一的选择是@Niels Filter Method 2
标签: c# crystal-reports progress-bar