我的网页上有一个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控件消失?
答案 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