0

CrystalReportを作成しました。正常に動作しています。次に、Asp.Netで使用してみました

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

初回は正常に動作しますが、printボタンをクリックするとレポートが消えてエラーになります。BindReportメソッドを移動すると、if(!IsPostBack)正常に機能し始めます。

以下は、印刷ボタンがクリックされたときにエラーを示します。

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

しかし、これは正常に機能します

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

誰かが私に理由を理解するのを手伝ってもらえますか?

4

1 に答える 1

2

CrystalReportViewerコントロールのマウスクリックイベントのみをViewStateにシリアル化できる限り、シリアル化できるレポートクラスにバインドすると、ページをリロードするときに解決できない問題が発生します。

1レポートバインディングコードがNotIsPostBack条件付きブロックに配置されている場合、ViewStateからのマウスクリックイベントは保持されますが、レポートのバインディングは行われず、例外がスローされます。

2レポートバインディングコードが条件付きブロックの外側に配置されている場合、レポートは正しくバインドされますが、プロセスでViewStateの内容がクラッシュし、マウスクリックイベントが失われます。

注:この状況は、CrystalReportViewerコントロールの複数のページへのレポートでクリックが行われた場合に最も頻繁に発生します。その後、レポートは不思議なことに1ページに戻ります。

Solution

バインディングコードCrystalReportViewerコントロールをInitイベントに配置します

リンク: http: //msdn.microsoft.com/fr-fr/library/ms225455%28v=vs.90%29.aspx

于 2012-10-04T09:58:23.267 に答える