Как наследовать отчёт из кода?

Question: Как наследовать отчёт из кода?

Answer:

1. Создайте новый отчёт:

Report report = new Report();

 2. Добавьте событие CustomLoadEventHandler для загрузки базового отчёта:

report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport); 

 3.Загрузите наследуемый отчёт:

report.Load("InheritReport.frx"); 

 4. Удалите CustomLoadEventHandler:

report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport); 

 5. Теперь Вы можете показать отчёт или открыть его в дизайнере. Он будет содержать как тот, что наследуется, так и тот, который наследует базовый отчёт:

report.Show(); 

Также нужно создать событие для загрузки базового отчёта:

1
2
3
4
5
6
private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) 
{ 
// e.FileName contains the name of base report. It may be the file name, or an ID in the database, 
// it depends on how you load the main report 
e.Report.Load("C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx"); 
} 

 И полный код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 }
 
 private void Form1_Load(object sender, EventArgs e)
 {
 Report report = new Report();
 report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport);
 report.Load("InheritReport.frx");
 report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport);
 
 report.Show();
 }
 
 private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e)
 {
 // e.FileName contains the name of base report. It may be the file name, or an ID in the database,
 // it depends on how you load the main report
 e.Report.Load("C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx");
 }
 }

 Если Вы хотите загрузить отчёт из базы данных, замените метод Load() на LoadFromString().