"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 个参数,并且都已设置。不需要数据源。
为什么 有时:
- 我第一次显示表单时抛出异常,因为我以编程方式更新了 textbox/numericupdown,并且触发了事件 "quickly"。
- 当我同时输入 2 笔画时抛出异常,甚至当我输入 really quick.
- 当我在输入中正常输入时,不会抛出异常。
我的想法是 reportViewer.RefreshReport() 在内部是异步的,当事件在完成之前触发时,它会导致异常。
您可能感兴趣的其他内容:
- 堆栈跟踪:
- 即使抛出异常,报表也能正确呈现!
调试越来越难了,有什么建议吗?谢谢
在 一些 时间解决这个问题后,我 "solved" 在用户更改某些输入时仅更新数据结构(字典),并刷新报告使用计时器,仅当某些内容发生变化时。
看来 250ms 是定时器的合理间隔。
丑陋...但它有效并且问题变得令人沮丧。
我有一个 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 个参数,并且都已设置。不需要数据源。
为什么 有时:
- 我第一次显示表单时抛出异常,因为我以编程方式更新了 textbox/numericupdown,并且触发了事件 "quickly"。
- 当我同时输入 2 笔画时抛出异常,甚至当我输入 really quick.
- 当我在输入中正常输入时,不会抛出异常。
我的想法是 reportViewer.RefreshReport() 在内部是异步的,当事件在完成之前触发时,它会导致异常。
您可能感兴趣的其他内容:
- 堆栈跟踪:
- 即使抛出异常,报表也能正确呈现!
调试越来越难了,有什么建议吗?谢谢
在 一些 时间解决这个问题后,我 "solved" 在用户更改某些输入时仅更新数据结构(字典),并刷新报告使用计时器,仅当某些内容发生变化时。
看来 250ms 是定时器的合理间隔。
丑陋...但它有效并且问题变得令人沮丧。