У меня есть приложение 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 выдается исключение, говорящее «Операция недопустима из-за текущего состояния объекта».
Итак:
- Существует ли более простой способ динамической настройки столбцов существующего файла .rdl c?
- Если нет, что я должен исправить в своем коде, чтобы он правильно отображал сделанные мной изменения?