public IEnumerable <DocumentModel.Row> Generate() { this.Databind(); List <DocumentModel.Row> rows = new List <DocumentModel.Row>(); DataSourceBrowser browser; if (!string.IsNullOrWhiteSpace(this.DataMember)) { browser = new ObjectDataSourceBrowser((this.DataSource ?? new ObjectDataSourceBrowser(DataBindingContext.Peek())).GetValue(this.DataMember)); } else { browser = this.DataSource; } if (browser != null) { while (browser.MoveNext()) { DataBindingContext.Push(browser.Current); if (this.Header != null) { rows.AddRange(this.Header.Generate()); } if (this.SubSection != null) { rows.AddRange(this.SubSection.Generate()); } if (this.Footer != null) { rows.AddRange(this.Footer.Generate()); } } DataBindingContext.Pop(); } else { if (this.Header != null) { rows.AddRange(this.Header.Generate()); } if (this.SubSection != null) { rows.AddRange(this.SubSection.Generate()); } if (this.Footer != null) { rows.AddRange(this.Footer.Generate()); } } return(rows); }
public Document Generate() { List <DocumentModel.Sheet> sheets = new List <DocumentModel.Sheet>(); if (this.DataSource != null) { DataSourceBrowser browser; if (!string.IsNullOrWhiteSpace(this.DataMember)) { browser = new ObjectDataSourceBrowser(this.DataSource, this.DataMember); while (browser.MoveNext()) { DataBindingContext.Push(browser.Current); sheets.AddRange(this.Sheets.Select(s => s.Generate())); DataBindingContext.Pop(); } } else { while (this.DataSource.MoveNext()) { DataBindingContext.Push(this.DataSource.Current); sheets.AddRange(this.Sheets.Select(s => s.Generate())); DataBindingContext.Pop(); } } } else { sheets.AddRange(this.Sheets.Select(s => s.Generate())); } Document doc = new Document(sheets); return(doc); }