or
In the Sales by product line per period the demo show how the columns and the rows can be expanded and collapsed, but I don't see a way to do this? I cannot find this information in the documentation? How is this accomplished?
namespace TelerikReporting{ using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using Telerik.Reporting; using Telerik.Reporting.Drawing; using System.Configuration; using System.Data.SqlClient; using DataService.ConnectionFactory; public partial class PropRep : Telerik.Reporting.Report { public PropRep(int ID) { // // Required for telerik Reporting designer support // InitializeComponent(); this.ReportParameters["ID"].Value = ID; PropTest.Parameters["@ID"].Value = ID; PropTest.ConnectionString = ConnectionFactory.GetConnectionString(ConnectionType.SQLConnection); // // TODO: Add any constructor code after InitializeComponent call // } }}<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <telerik:ReportViewer ID="ReportViewer1" Width="100%" Height="800px" runat="server"></telerik:ReportViewer> </div> </form></body></html>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls; public partial class Reporting_Report : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString["PID"] != null) { int ID = Convert.ToInt32(Request.QueryString["PID"].ToString()); Telerik.Reporting.InstanceReportSource instanceReportSource = new Telerik.Reporting.InstanceReportSource(); instanceReportSource.ReportDocument = new TelerikReporting.PropRep(ID); this.ReportViewer1.ReportSource = instanceReportSource; } } }}private void BuildTable(ScheduleInfo context) { //create empty table var scheduleTable = new Table { Location = new PointU(Unit.Cm(0), Unit.Cm(0)), Name = "ScheduleTable", RowHeadersPrintOnEveryPage = true, KeepTogether = false }; //insert table in detail section Details.Items.AddRange(new ReportItemBase[] { scheduleTable }); var rowGroup = new TableGroup(); //add header row scheduleTable.Body.Rows.Add(new TableBodyRow(Unit.Cm(0.8))); //set page layout if (context.Columns.Count<5) { ToPortrait(); } else { ToLandscape(); } var columnWidth = Width/context.Columns.Count; var minWidth = Unit.Mm(30); if (columnWidth < minWidth) columnWidth = minWidth; var rowHeight = Unit.Mm(6); var i = 0; foreach (var column in context.Columns) { scheduleTable.Body.Columns.Add(new TableBodyColumn(columnWidth)); var headerText = new TextBox { Value = column.Header, Size = new SizeU(columnWidth, rowHeight) }; headerText.Style.Font.Bold = true; var cellInfo = column.Appointments != null ? string.Join("\n\n", column.Appointments.Select(x => x.ToString())) : null; var cellText = new TextBox { Value = cellInfo, Size = new SizeU(columnWidth, rowHeight), KeepTogether = false }; scheduleTable.Body.SetCellContent(0, i, cellText); var colGroup = new TableGroup {ReportItem = headerText}; colGroup.GroupKeepTogether = false; scheduleTable.ColumnGroups.Add(colGroup); scheduleTable.Items.AddRange(new ReportItemBase[] { headerText, cellText }); i++; } rowGroup.Groupings.AddRange(new [] {new Grouping("")}); rowGroup.Name = "DetailGroup"; rowGroup.GroupKeepTogether = false; scheduleTable.RowGroups.Add(rowGroup); Details.Items.Add(scheduleTable);}