Reportviewer показывает пустую страницу после добавления некоторого кода

У меня есть отчет, который отлично отображается, когда я заполняю его данными. У меня есть сложные диаграммы, таблицы и много данных (около 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);

        }

Этот код в основном проверяет, имеют ли все данные одинаковый интервал, в противном случае добавляется линия разрыва. Когда я добавляю этот код, мое средство просмотра отчетов сразу показывает пустую страницу без каких-либо ошибок или элементов управления отчетом (кнопки «Далее», «Печать», «Экспорт» и т. д.). Однако, если я закомментирую этот код, отчет будет сгенерирован без каких-либо проблем.

Я попытался отладить код и поставить точку останова на источниках данных. Я был удивлен, увидев, что средство просмотра отчетов все еще работает и показывает пустую страницу, несмотря на точку останова. Итак, очевидно, что данные не привязаны, и поэтому средство просмотра отчетов пусто.

Я подозреваю, что средство просмотра отчетов превышает выделенную ему память, поэтому пропускает мой код и привязку данных и печатает пустую страницу. Кто-нибудь может помочь?


person Shruti Kapoor    schedule 20.08.2013    source источник
comment
Вы проверили журнал событий? Я видел случаи, когда это было единственное место, где можно было найти проблемы с пользовательским кодом.   -  person Jeroen    schedule 21.08.2013
comment
Спасибо Jeroen, я проверил журнал, но это не помогло.   -  person Shruti Kapoor    schedule 22.08.2013


Ответы (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);

}
person Shruti Kapoor    schedule 21.08.2013