private
void
subPortfolioStatistics_NeedDataSource(
object
sender, EventArgs e)
{
Telerik.Reporting.Processing.SubReport subReport = (Telerik.Reporting.Processing.SubReport) sender;
CustomerPortfolios custPortfolio = (CustomerPortfolios) subReport.DataObject.RawData;
_customerPortfolio = custPortfolio.customerPortfolios;
if
(_customerPortfolio !=
null
&& _customerPortfolio.Count > 0)
{
CustomerInvoiceLogs customerInvoiceLogs =
new
CustomerInvoiceLogs();
foreach
(CustomerPortfolio cp
in
_customerPortfolio)
{
customerInvoiceLogs.AddRange(DFInvoiceStats.InvoicesByCustomerIdWithoutTaxNumberRelation(cp.CustomerId, _startYear, _endYear));
}
subReport.InnerReport.DataSource = customerInvoiceLogs;
}
}
How to group table programically?
I’m using AutoGenerateColumns project
And add code for group table but I getting error “.object reference not set to an instance of an object”
SqlConnection cn = new SqlConnection("Data Source=PC\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True");
cn.Open();
SqlCommand command = new SqlCommand(“ProcName”, cn);
command.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sqlAdapter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
sqlAdapter.Fill(ds);
Telerik.Reporting.Processing.Table processingTable = (sender as Telerik.Reporting.Processing.Table);
processingTable.DataSource = ds.Tables[0];
Telerik.Reporting.HtmlTextBox textboxGroup;
Telerik.Reporting.HtmlTextBox textBoxTable;
this.table1.ColumnGroups.Clear();
this.table1.Body.Columns.Clear();
this.table1.Body.Rows.Clear();
this.table1.ColumnHeadersPrintOnEveryPage = true;
int i = 0;
float widthMid = 0;
if (PageSettings.Landscape)
widthMid = (this.PageSettings.PaperSize.Height.Value - GetAsMm( this.PageSettings.Margins.Left) - GetAsMm( this.PageSettings.Margins.Right) ) / (ds.Tables[0].Columns.Count);
else
widthMid = (this.PageSettings.PaperSize.Width.Value - GetAsMm(this.PageSettings.Margins.Left) - GetAsMm(this.PageSettings.Margins.Right) ) / (ds.Tables[0].Columns.Count);
///////////////////////////////////////////////////////////////
for (int x = ds.Tables[0].Columns.Count - 1; x >= 0; x--)
//foreach (DataColumn dc in ds.Tables[0].Columns)
{
DataColumn dc = ds.Tables[0].Columns[x];
Telerik.Reporting.TableGroup tableGroupColumn = new Telerik.Reporting.TableGroup();
this.table1.ColumnGroups.Add(tableGroupColumn);
this.table1.Body.Columns.Add(new Telerik.Reporting.TableBodyColumn(Unit.Mm(widthMid)));
textboxGroup = new Telerik.Reporting.HtmlTextBox();
textboxGroup.Style.BorderColor.Default = Color.Black;
textboxGroup.Style.BorderStyle.Default = BorderType.Solid;
textboxGroup.Value = Equivalent.GetEquivalent(dc.ColumnName.ToString());
textboxGroup.Size = new SizeU(Unit.Cm(0.2), Unit.Inch(0.3));
textboxGroup.Style.TextAlign = HorizontalAlign.Center;
tableGroupColumn.ReportItem = textboxGroup;
textBoxTable = new Telerik.Reporting.HtmlTextBox();
textBoxTable.Style.BorderColor.Default = Color.Red;
textBoxTable.Style.BorderStyle.Default = BorderType.Solid;
textBoxTable.Value = "=Fields." + dc.ColumnName;
textBoxTable.Size = new SizeU(Unit.Cm(0.2), Unit.Inch(0.3));
textBoxTable.Style.TextAlign = HorizontalAlign.Right;
this.table1.Body.SetCellContent(0, i++, textBoxTable);
this.table1.Items.AddRange(new ReportItemBase[] { textBoxTable, textboxGroup });
}
///////////////////////////////////////////////////////////////
///grouping part
Telerik.Reporting.TableGroup group1 = new Telerik.Reporting.TableGroup();
group1.Name = "IDGroup";
group1.Groupings.Add(new Telerik.Reporting.Data.Grouping("=Fields.ID"));
Telerik.Reporting.TextBox textBox1 = new Telerik.Reporting.TextBox();
table1.Items.Add(textBox1);
group1.ReportItem = textBox1;
table1.RowGroups.Add(group1);
///////////////////////////////////////////////////////////////
This code have error only I using a grouping part
I have read through the documentation and to my understanding it is NOT possible to pass a parameter from an .aspx page directly to the SQL statement in the data table. I need to pull the data in its entirety and use parameters on the report to “filter” out what is not needed. Is this correct?
My issue is I need to pass a parameter to the WHERE clause of my SQL query to pull different users by a certain type. Unfortunately, because of the way our tables are setup I must programmatically switch between two separate queries or (data tables) depending on which user type is chosen. Also, pulling everything from our database and filtering at the report level has huge impacts on our report’s performance and I would like to stay away from that if possible.