Работа с Datasource отчета из кода
Здравствуйте!
Возникли проблемы с работой с источниками данных из кода.
Ситуация следующая:
1. Есть база данных. Делаем в дизайнере отчет, источником выступает таблица БД.
2. В софте есть класс, описывающий эту таблицу (поля называются одинаково).
3. Пользователь запускает софт, данные загружаются из таблицы БД в память (список классов)
4. Пользователь редактирует данные (добавляет, удаляет записи) и хочет просмотреть что получается в отчете (данные надо взять из памяти).
Вот здесь и возникает проблема. Как в отчете удалить привязку к БД и привязать отчет к списку в памяти?
Спасибо.
Возникли проблемы с работой с источниками данных из кода.
Ситуация следующая:
1. Есть база данных. Делаем в дизайнере отчет, источником выступает таблица БД.
2. В софте есть класс, описывающий эту таблицу (поля называются одинаково).
3. Пользователь запускает софт, данные загружаются из таблицы БД в память (список классов)
4. Пользователь редактирует данные (добавляет, удаляет записи) и хочет просмотреть что получается в отчете (данные надо взять из памяти).
Вот здесь и возникает проблема. Как в отчете удалить привязку к БД и привязать отчет к списку в памяти?
Спасибо.
Комментарии
Надо вместо имеющегося в отчете источника данных зарегистрировать новый с таким же именем и набором полей. Попробуйте так:
Вот исходный код:
List<Emp> list = new List<Emp>();
list.Add(new Emp() { Id = "Id1", Name = "Name1" });
list.Add(new Emp() { Id = "Id2", Name = "Name2" });
list.Add(new Emp() { Id = "Id3", Name = "Name3" });
list.Add(new Emp() { Id = "Id4", Name = "Name4" });
list.Add(new Emp() { Id = "Id5", Name = "Name5" });
Report report = new Report();
report.Load(@d:\Test1.frx);
report.Dictionary.DataSources.Clear();
report.RegisterData(list, "Data");
DataSourceBase datasource = report.GetDataSource("Data");
datasource.Enabled = true;
(report.FindObject("Data1") as DataBand).DataSource = datasource;
report.Design();
Почему то report.Dictionary.DataSources.Count = 0
Вместо
report.Dictionary.DataSources.Clear();
написал
report.Dictionary.Connections.Clear();
Все заработало.
Еще вопрос: в дизайнере таблица БД отображается под узлом Connection, значит она будет не видна в report.Dictionary.DataSources.?