我有一个报告,当我用数据填充它时渲染完全正常。我有复杂的图表,表格和大量数据(大约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超出了分配给它的内存,因此跳过我的代码和数据绑定并打印空白页面。有人可以帮忙吗?
答案 0 :(得分:0)
问题不在于报告生成器的内存,而在于我的代码。我将代码更改为以下内容并且有效:
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);
}