Reportviewer在添加一些代码后显示空白页
本文关键字:显示 空白 代码 添加 Reportviewer | 更新日期: 2023-09-27 18:28:19
我有一个报告,当我用数据填充它时,它呈现得非常好。我有复杂的图表和大量数据(大约20000个内存对象)。我的报告表现得非常好,直到我添加了一个for循环来进行一些数据计算。for循环如下:
public void InsertLineBreaks(List<LineChart> inputList, int sampleInterval)
{
List<LineChart> breaklinesList = new List<LineChart> { };
for (int i = 1; i <= inputList.Count; i++)
{
if ((inputList[i].X - inputList[i - 1].X).TotalMinutes > sampleInterval)
{
LineChart breakline = inputList[i];
breakline.BreakLine = 1;
breaklinesList.Add(breakline);
}
inputList.AddRange(breaklinesList);
}
此代码主要检查每个数据是否具有相同的间隔,否则会添加特征线。当我添加此代码时,我的报表查看器直接显示一个空白页,没有任何错误或报表控件(下一步、打印、导出等按钮)。但是,如果我注释掉这个代码,那么报告生成得很好,没有任何问题。
我试着调试代码,并在数据源上设置了一个断点。我惊讶地发现,尽管存在断点,reportviewer仍然运行并显示一个空白页面。很明显,数据没有绑定,这就是为什么报表查看器是空白的。
我怀疑reportviewer超出了分配给它的内存,因此跳过了我的代码和数据绑定并打印空白页。有人能帮忙吗?
问题不在于报表生成器的内存,而在于我的代码。我将代码更改为以下代码,它起作用了:
public void InsertLineBreaks(List<LineChart> inputList, int sampleInterval)
{
List<LineChart> breaklinesList = new List<LineChart> { };
for (int i = 1; i <= inputList.Count; i++)
{
if ((inputList[i].X - inputList[i - 1].X).TotalMinutes > sampleInterval)
{
LineChart breakline = inputList[i];
breakline.BreakLine = 1;
breaklinesList.Add(breakline);
}
}
inputList.AddRange(breaklinesList);
}