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超出了分配给它的内存,因此跳过了我的代码和数据绑定并打印空白页。有人能帮忙吗?

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);
}