Элемент управления Microsoft ReportViewer (Web) и отображение сообщений об ошибках - PullRequest
2 голосов
/ 18 августа 2011

У меня есть элемент управления Microsoft ReportViewer на моей веб-странице. Однако, если кто-то вводит недопустимый ввод для одного из параметров, он отображает довольно недружелюбное сообщение об ошибке, куда должен идти отчет. Например: The value provided for the report parameter 'pToDate' is not valid for its type. (rsReportParameterTypeMismatch)

Элемент управления запрашивает у пользователя информацию с «На дату», а «pToDate» является внутренним именем параметра. Пользователи не будут знать об этом, и, скорее всего, они не будут хорошо реагировать на «rsReportParameterTypeMismatch» (что бы это ни значило !? [думая как пользователь])

Поскольку я не мог найти где-то в элементе управления ReportViewer для размещения каких-либо сообщений об ошибках или пользовательских сообщений, мое решение состояло в том, чтобы создать метку, в которой можно было бы разместить более понятное сообщение об ошибке. Это работает, если отображается понятное сообщение об ошибке.

Моя проблема в том, что, как только пользователь исправил свою ошибку и нажал «Просмотреть отчет», отчет отображается, но сообщение об ошибке по-прежнему отображается. Я установил текст метки на string.Empty, я установил метку на Visible = false. Я пробовал это в разных местах, убедился, что код нажал, но безрезультатно.

Итак, есть ли способ заставить пользовательские сообщения появляться и исчезать с помощью элемента управления ReportViewer?

1 Ответ

0 голосов
/ 18 августа 2011

Хорошо - у меня есть кое-что, что работает

Ранее у меня было это:

<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>

ОБНОВЛЕНИЕ

Я также добавил полное объяснение в свой блог: Дружественные сообщения об ошибках с помощью Microsoft Report Viewer

...