2

Web ページに Microsoft ReportViewer コントロールがあります。ただし、誰かがパラメーターの 1 つに無効な入力を入力すると、レポートの送信先にやや不親切なエラー メッセージが表示されます。例えば:The value provided for the report parameter 'pToDate' is not valid for its type. (rsReportParameterTypeMismatch)

コントロールは、"To Date" と "pToDate" がパラメーターの内部名である情報をユーザーに要求します。ユーザーはこれを知りませんし、"rsReportParameterTypeMismatch" にうまく反応しない可能性もあります (それが何を意味するのか!? [ユーザーのように考えながら])。

ReportViewer コントロールのどこかにエラーまたはカスタム メッセージを配置する場所が見つからなかったので、私の解決策は、わかりやすいエラー メッセージを配置するためのラベルを作成することでした。これは、わかりやすいエラー メッセージが表示される限り機能します。

私の問題は、ユーザーが間違いを修正して [レポートの表示] をクリックすると、レポートは表示されますが、エラー メッセージは引き続き表示されることです。ラベル テキストをstring.Emptyに設定しました。ラベルを に設定しましたVisible = false。私はこれをさまざまな場所で試しましたが、コードがヒットすることを確認しましたが、役に立ちませんでした。

では、ReportViewer コントロールでカスタム メッセージを表示および非表示にする方法はありますか?

4

1 に答える 1

0

わかりました - うまくいくものがあります

以前私はこれを持っていました:

<asp:Label runat="server" ID="ReportErrorMessage" Visible="false" CssClass="report-error-message">
</asp:Label>

次のようにコードビハインドで更新していました:

ReportErrorMessage.Text = GetErrorMessage(reportException);
ReportErrorMessage.Visible = true;

そして、次のように削除します:

ReportErrorMessage.Visible = false;
ReportErrorMessage.Text = string.Empty;

後半はうまくいきませんでした。

最終的に、ReportViewer コントロールが部分レンダリングを使用しているため、実際にはラベルをまったく変更していないことに気付きました (それを考えると、最初の表示が実際にどのように機能するかはまだよくわかりませんが、とにかく...)

解決策は、次のように更新パネルでラベルをラップすることでした。

<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:Label runat="server" ID="ReportErrorMessage" Visible="false" CssClass="report-error-message">
        </asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

アップデート

また、ブログに完全な説明を追加しました: Friendly Error Messages with Microsoft Report Viewer

于 2011-08-18T13:52:44.850 に答える