Microsoft ReportViewer控件(Web)&显示错误消息

时间:2011-08-18 12:47:55

标签: asp.net reportviewer report-viewer2010

我的网页上有一个Microsoft ReportViewer控件。但是,如果有人为其中一个参数输入了无效输入,那么它会显示一条相当不友好的错误消息,报告应该在该消息中出现。例如: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控件消失?

1 个答案:

答案 0 :(得分: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

相关问题