【问题标题】:Reportviewer shows blank page after adding some codeReportviewer 添加一些代码后显示空白页
【发布时间】:2013-08-20 17:54:35
【问题描述】:

我有一个报告,当我用数据填充它时,它呈现得非常好。我有复杂的图表、表格和大量数据(大约 20,000 个内存对象)。我的报告呈现得非常好,直到我为一些数据计算添加了一个 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 超出了分配给它的内存,因此会跳过我的代码和数据绑定并打印空白页。任何人都可以帮忙吗?

【问题讨论】:

  • 您检查过事件日志吗?我见过这样的案例,这是唯一可以发现自定义代码问题的地方。
  • 感谢 Jeroen,我检查了日志,但没有帮助。

标签: c# visual-studio-2012 reporting-services reportviewer reportbuilder


【解决方案1】:

问题不在于报表生成器的内存,而在于我的代码。我将代码更改为以下代码并且它起作用了:

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2021-10-27
    相关资源
    最近更新 更多