2015-01-13 136 views
4

我正在使用ASP.NET,SQL和Crystal Report。我已成功生成單頁報告。但是,當報表大小超過一頁以上時,Crystal Report僅顯示首頁數據。當我點擊下一個按鈕時,它顯示「源空或找不到源」,如消息。Crystal Report僅顯示第一頁

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim rptDoc As New ReportDocument 
    Dim ds As New StudentDataSet 
    Dim sqlCon As SqlConnection 
    Dim dt As New DataTable 
    dt.TableName = "Crystal Report Example" 
    sqlCon = New SqlConnection(myCon) 
    Dim da As New SqlDataAdapter("select * from tblStudent", sqlCon) 
    da.Fill(dt) 
    ds.Tables(0).Merge(dt) 
    rptDoc.Load(Server.MapPath("~\Reports\StudentList.rpt")) 
    rptDoc.SetDataSource(ds) 
    CrystalReportViewer1.ReportSource = rptDoc 

    End Sub 

enter image description here

+0

對於大多數人來說,這看起來並沒有發生。而且您還沒有發佈任何與大多數人分開的案例,這意味着您的問題中沒有任何信息可供人們用來回答。發佈源代碼或其他細節,以便這裏的人們可以順利通過。 –

+0

那麼確切的消息框是「沒有有效的報告源可用」。我目前無法發佈圖片。它顯示,當我點擊水晶報告的下一頁按鈕。 – Abdul

回答

1

加載該報告必須在每個回發執行的代碼。
Page_Init是您可以放置​​此代碼的正確位置(Page_Load可能導致一些錯誤)。

嘗試這種變化(對不起,VB的錯誤,我使用C#):

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
ButtonClicked = true 
ShowReport() 

Protected void Page_Init(object sender, EventArgs e) 
ShowReport() 

Protected Sub ShowReport() 
Dim rptDoc As New ReportDocument 
Dim ds As New StudentDataSet 
Dim sqlCon As SqlConnection 
Dim dt As New DataTable 
dt.TableName = "Crystal Report Example" 
sqlCon = New SqlConnection(myCon) 
Dim da As New SqlDataAdapter("select * from tblStudent", sqlCon) 
da.Fill(dt) 
ds.Tables(0).Merge(dt) 
rptDoc.Load(Server.MapPath("~\Reports\StudentList.rpt")) 
rptDoc.SetDataSource(ds) 
CrystalReportViewer1.ReportSource = rptDoc 

End Sub 

嘿,這是reccomended關閉的ReportDocument在每一頁上卸載;這可以避免報表計數器上的不受控制的增加,從而停止應用程序

protected void Page_Unload(object sender, EventArgs e) 
{ 
    if (reportDocument != null) 
     reportDocument.Close(); 
} 
+0

謝謝,但現在它顯示加載報告,沒有按鈕單擊。另外,請解釋什麼是ButtonClicked = true。像你我只是一個VB開發人員 – Abdul

+0

工作:而不是放置在Page_Init中的ShowReport(),我已經把它放在Page_Load與如果Page.IsPostBack然後 報告() 結束如果 – Abdul

+0

我用一個布爾變量,稱爲ButtonClicked即設置按鈕單擊,以避免此問題 –