"Some parameters or credentials have not been specified" 更新 LocalReport 参数并刷新它时 -- 仅在快速完成时 --

"Some parameters or credentials have not been specified" when updating a LocalReport parameter and refreshing it -- only when done quickly --

我有一个 WinForm (MVP) 应用程序,我必须在 ReportViewer 中显示一个 LocalReport 并使用一些 textbox/numericUpDown.

更新它

LocalReport只需要参数,每一个输入就是设置一个参数。

这是我在表单中设置 LocalReport 的代码:

 public LocalReport ReportToShow
    {
        set
        {
            //
            //assign report Path
            reportViewer.LocalReport.ReportPath = value.ReportPath;

            //get a list of actual parameters in the report, with the value set @ String.Empty
            var newParams = value.GetParameters().Select(t => new ReportParameter(t.Name, String.Empty)).ToList();

            reportViewer.LocalReport.SetParameters(newParams);



            //show the report for the first time
            reportViewer.RefreshReport();
        }
    }

而这是有时(下面会解释)导致异常的代码:

private void UpdateParam(String name, String value)
    {
        reportViewer.LocalReport.SetParameters(new[] {new ReportParameter(name, value)});
        reportViewer.LocalReport.Refresh();
    }

此方法绑定到我输入的 TextChanged/ValueChanged 事件。基本上,每次输入更改时,报告都会刷新。

这是例外情况:

请注意,报告现在只有 2 个参数,并且都已设置。不需要数据源。

为什么 有时:

我的想法是 reportViewer.RefreshReport() 在内部是异步的,当事件在完成之前触发时,它会导致异常。

您可能感兴趣的其他内容:

调试越来越难了,有什么建议吗?谢谢

一些 时间解决这个问题后,我 "solved" 在用户更改某些输入时仅更新数据结构(字典),并刷新报告使用计时器,仅当某些内容发生变化时。

看来 250ms 是定时器的合理间隔。

丑陋...但它有效并且问题变得令人沮丧。