0

我有一份報告,當我用數據填充它時,呈現完美。我有複雜的圖表,表格和大量數據(大約20000個內存對象)。我的報告完美無缺,直到我爲某些數據計算添加了for循環。 for循環如下: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); 

     } 

這段代碼主要檢查每個數據是否有相同的間隔,否則加上breakline。當我添加此代碼時,我的reportviewer直接顯示沒有任何錯誤或報告控件的空白頁面(下一步,打印,導出等按鈕)。但是,如果我將這些代碼評論出來,報告就會毫無問題地生成。

我試着調試代碼,並在數據源上放置一個斷點。我很驚訝地發現報表查看器仍然運行,並且顯示了一個空白頁面,儘管存在斷點。顯然,這些數據沒有綁定,這就是報告查看器爲空的原因。

我懷疑reportviewer超出分配給它的內存,因此跳過我的代碼和數據綁定並打印空白頁。誰能幫忙?

+0

您是否檢查過事件日誌?我見過這種情況,這是唯一可以找到自定義代碼問題的地方。 – Jeroen

+0

謝謝Jeroen,我檢查了日誌,但沒有幫助。 –

回答

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

}