ReportViewer LocalReport не обновляется при использовании LoadReportDefinition - PullRequest
0 голосов
/ 12 марта 2020

У меня есть приложение WinForms, которое использует класс ReportViewer (из пространства имен Microsoft.Reporting.WinForms). Он показывает данные правильно, но я хотел бы изменить порядок столбцов. Насколько я знаю, не было простого способа сделать это (если я ошибаюсь, пожалуйста, дайте мне знать), поэтому я настраивал XML и пытался обновить отчет с помощью LoadReportDefinition (I ' Я пропущу код XML, если вы не хотите его видеть, но я подтвердил, что свойство obj Xml .Inner Xml действительно XML:

XmlDocument objXml = new XmlDocument();

using (MemoryStream memoryStream = new MemoryStream(Encoding.ASCII.GetBytes(objXml.InnerXml)))
{
    // Form.FormReportViewer.Reset();
    Form.FormReportViewer.LocalReport.EnableExternalImages = true;

    if (Form.FormReportViewer.LocalReport.DataSources["DataSet"] == null)
    {
        Form.FormReportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet")
        {
            Value = RawDataReport.table
        });
    }

    Form.FormReportViewer.ProcessingMode = ProcessingMode.Local;
    Form.FormReportViewer.PageCountMode = PageCountMode.Actual;

    Form.FormReportViewer.LocalReport.ReportPath = "";
    Form.FormReportViewer.LocalReport.LoadReportDefinition(memoryStream);
    Form.FormReportViewer.LocalReport.SetParameters(parameters);
    Form.FormReportViewer.RenderingComplete += Form.ShowPrintDialog;
    Form.FormReportViewer.RefreshReport();

}

Если я сохраню строку, строка, которая сбрасывает закомментированный ReportViewer (FormReportViewer.Reset ()), код выполняется, и отчет печатается, но показывает исходный файл .rdl c без изменений, которые я внес в XML. Если я действительно раскомментирую строку, при попытке доступа к классу PrintDialog выдается исключение, говорящее «Операция недопустима из-за текущего состояния объекта».

Итак:

  1. Существует ли более простой способ динамической настройки столбцов существующего файла .rdl c?
  2. Если нет, что я должен исправить в своем коде, чтобы он правильно отображал сделанные мной изменения?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...