У меня есть winform, которая использует фонового работника для сбора файлов и их фильтрации по дате, типу файла и т. Д. Эти файлы хранятся в списке под названием «allfiles». Я хотел бы отобразить этот список в программе просмотра отчетов. Из того, что я нашел до сих пор, лучший способ сделать это - проанализировать список в datatable, а затем установить этот datatable в качестве источника данных для файла «report.rdlc» перед загрузкой этого файла в средство просмотра отчетов.
Это код, который я использую для разбора списка в таблицу данных:
DataTable dtable = new DataTable();
dtable.Columns.Add("Field Name", typeof(string));
foreach (string x in allfiles.ToArray())
{
DataRow dataRow = dtable.NewRow();
dataRow["Field Name"] = x;
dtable.Rows.Add(dataRow);
dtable.AcceptChanges();
}
Это код, который я использую, чтобы эти данные отображались в моем средстве просмотра отчетов:
BindingSource thisIsABindingSource = new BindingSource();
thisIsABindingSource.DataSource = dtable;
reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
var reportDataSource1 = new ReportDataSource { Name = "list", Value = thisIsABindingSource};
string exeFolder = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
reportViewer1.LocalReport.ReportPath = exeFolder + @"\Report1.rdlc";
reportViewer1.LocalReport.ReportEmbeddedResource = exeFolder + @"\Report1.rdlc";
reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
Проблема, с которой я сталкиваюсь, заключается в том, что при запуске этого кода средство просмотра отчетов остается пустым, т.е. пустой белый лист без информации (см. screecap of reportviewer ). Кажется, это должно быть легко исправить, но ничего, что я пробовал, не сработало.