2012-10-04 43 views
0

我已經創建了一個Crystal Report。它工作正常。然後我試圖使用爲什麼需要重新綁定Crystal Report

<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
DisplayGroupTree="False" /> 

第一次使用它在Asp.Net,它工作正常,但是當我點擊print按鈕,該報告將消失,給出了一個錯誤。當我將BindReport方法移出if(!IsPostBack)時,它開始正常工作。

列出了錯誤點擊打印按鈕時:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     BindReport(); 
    } 
} 

但能正常工作

protected void Page_Load(object sender, EventArgs e) 
{ 
    BindReport(); 
} 

有人可以幫助我瞭解的原因是什麼?

+0

你需要做的是u需要調用BindReport()在按鈕點擊事件... –

+0

是的,我知道。這就是我爲什麼需要再次重新綁定它的原因? –

回答

2

,只要僅CrystalReportViewer控件的鼠標點擊事件可以被序列化到ViewState中,結合於可序列的報告類時重新加載網頁生成一個無法解決的問題:

1如果報告綁定代碼被置於在Not IsPostBack條件塊中,保留了ViewState中的鼠標單擊事件,但報表的綁定沒有發生,並且拋出異常。

2如果報表綁定代碼放置在條件塊之外,報表被正確綁定,但ViewState的內容在進程中被壓縮,並且鼠標單擊事件丟失。

注意:當在CrystalReportViewer控件的多個頁面中生成報表時,最常發生這種情況。報告繼續然後神祕地回到第1頁的

Solution 

把綁定代碼CrystalReportViewer控件的Init事件

鏈接:http://msdn.microsoft.com/fr-fr/library/ms225455%28v=vs.90%29.aspx

+0

偉大的文章。多謝,夥計。 –

+0

我很樂意爲您服務,Usman,謝謝您 –