I’m having some issues with the report rendering when using conditional visibility and lists.
To start with, the text box with conditional visibility ( based on the value of the field) doesn’t “suppress” the area of the panel, which causes problems with single line text boxes (this is reproduced in the second case/page where there are no comments on Sheet.
Secondly, when there is no items on the nested table inside a list and the “empty” space is not “suppressed”. This case is shown in the fifth case/page where the Education doesn’t contain any Certificates.
The conditional visibility is implemented in all cases with Bindings such as:
Fields.CertificateList.Count >0
Here is a brief data structure:
Sheet
Description
Score
Comments (multiline)
List<SheetTrace>
List<Education>
SheetTrace
Date
Username
Action
Comments (multiline)
Education
Title
School
Comments (multiline)
List<Certificate>
Certificate
Class
Grade
The report is designed with the following layout:
masterPanel -> maps to Sheet
panel1 -> maps to SheetTrace and contains a Table object to show traces.
panel2 -> maps to Education and contains a List which shows Education items and a nested Table which shows Certificates.
The layout of the report and a set of sample screens are attached.
The installed Telerik report version is :Q2 2013, 7.1.13.612 under Visual Studio 2010 SP1
A complete self-contained project is available at your request.
Thanks in advance,
Chris
ASPX:
<telerik:RadGrid ID="ManagersPLProgressRadGrid" runat="server" AllowAutomaticInserts="false" AllowMultiRowSelection="true" AllowSorting="true" AutoGenerateColumns="false" AutoGenerateDeleteColumn="false" AutoGenerateEditColumn="false" GridLines="Both" Skin="" Visible="true" ShowFooter="true" AllowPaging="true" AllowCustomPaging="false" PageSize="10" OnNeedDataSource="ManagersPLProgressRadGrid_NeedDataSource" OnItemDataBound="ManagersPLProgressRadGrid_ItemDataBound" OnItemCommand="ManagersPLProgressRadGrid_ItemCommand"> <HeaderStyle CssClass="GridHeader" Font-Bold="True" ForeColor="White" /> <ItemStyle CssClass="GridRow" /> <AlternatingItemStyle /> <ActiveItemStyle CssClass="GridRow" /> <SelectedItemStyle CssClass="selectedrow" /> <PagerStyle CssClass="GridPager" VerticalAlign="Middle" ShowPagerText="false" Mode="NextPrevAndNumeric" /> <MasterTableView CommandItemDisplay="None" CssClass="Frame" Width="100%" RowIndicatorColumn-Reorderable="True" AllowSorting="false" EnableHeaderContextMenu="False" AllowCustomSorting="False" AllowMultiColumnSorting="False" ShowFooter="True" ForeColor="White" BackColor="Navy"> <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" /> <Columns> <telerik:GridBoundColumn UniqueName="ContactID" HeaderText="" DataField="ContactID" Visible="false" /> <telerik:GridTemplateColumn HeaderStyle-Width="5%"> <ItemTemplate> <asp:LinkButton ID="lnkShowData" runat="server" CommandName="HideShow">></asp:LinkButton> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="CINumber" HeaderText="" DataField="CINumber" HeaderStyle-Width="10%" /> <telerik:GridBoundColumn UniqueName="GName" HeaderText="" DataField="GName" HeaderStyle-Width="10%" /> <telerik:GridBoundColumn UniqueName="FName" HeaderText="" DataField="FName" HeaderStyle-Width="10%" /> <telerik:GridTemplateColumn> <ItemTemplate> <br /> <%--<div class="inner"> <div style="float: left;">--%> <rsweb:ReportViewer ID="reportViewer" runat="server" Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" BorderStyle="None" InternalBorderStyle="None" ShowToolBar="False" BackColor="Transparent" Width="100%" Height="65%"> <LocalReport ReportPath="Secure\ManagerPLProgress.rdlc"> </LocalReport> </rsweb:ReportViewer> <%-- </div> </div>--%> <asp:Panel id="pnlTIPrograms" runat="server" Visible="false"> <div class="inner"> <p><b>Submitted Manager Identified Activities</b></p> <telerik:RadGrid ID="ManagerIdentifiedActivitiesRadGrid" runat="server" AllowAutomaticInserts="false" AllowMultiRowSelection="true" AllowSorting="true" AutoGenerateColumns="false" AutoGenerateDeleteColumn="false" AutoGenerateEditColumn="false" GridLines="Both" Skin="" Visible="true" ShowFooter="true" AllowPaging="true" AllowCustomPaging="false" PageSize="10" OnNeedDataSource="ManagerIdentifiedActivitiesRadGrid_NeedDataSource" OnItemDataBound="ManagerIdentifiedActivitiesRadGrid_ItemDataBound"> <HeaderStyle CssClass="GridHeader" Font-Bold="True" ForeColor="White" BackColor="LightBlue" /> <ItemStyle CssClass="GridRow" /> <ActiveItemStyle CssClass="GridRow" /> <SelectedItemStyle CssClass="selectedrow" /> <PagerStyle CssClass="GridPager" VerticalAlign="Middle" ShowPagerText="false" Mode="NextPrevAndNumeric" /> <MasterTableView CommandItemDisplay="None" CssClass="Frame" Width="100%" RowIndicatorColumn-Reorderable="True" AllowSorting="false" EnableHeaderContextMenu="False" AllowCustomSorting="False" AllowMultiColumnSorting="False" ShowFooter="True" ForeColor="Black" BackColor="LightBlue"> <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" /> <Columns> <telerik:GridTemplateColumn UniqueName="TemplateColumn" HeaderText="" HeaderStyle-Wrap="true"> <ItemTemplate> <asp:Label ID="numLabel" runat="server" Width="30px" /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="ProgramNameHours" HeaderText="" DataField="ProgramNameHours" HeaderStyle-Width="25%" /> <telerik:GridBoundColumn UniqueName="Areas" HeaderText="" DataField="Areas" HeaderStyle-Width="25%" /> </Columns> <NoRecordsTemplate> <div style="width: inherit"> There are no records to display</div> </NoRecordsTemplate> </MasterTableView> <ClientSettings> <Resizing AllowColumnResize="True"></Resizing> <Selecting AllowRowSelect="False"></Selecting> </ClientSettings> </telerik:RadGrid> </div> <div class="inner"> <p><b>Submitted Accredited Programs</b></p> <telerik:RadGrid ID="ProgramsRadGrid" runat="server" AllowAutomaticInserts="false" AllowMultiRowSelection="true" AllowSorting="true" AutoGenerateColumns="false" AutoGenerateDeleteColumn="false" AutoGenerateEditColumn="false" GridLines="Both" Skin="" Visible="true" ShowFooter="true" AllowPaging="true" AllowCustomPaging="false" PageSize="10" OnNeedDataSource="ProgramsRadGrid_NeedDataSource" OnItemDataBound="ProgramsRadGrid_ItemDataBound"> <HeaderStyle CssClass="GridHeader" Font-Bold="True" ForeColor="White" BackColor="Green" /> <ItemStyle CssClass="GridRow" /> <ActiveItemStyle CssClass="GridRow" /> <SelectedItemStyle CssClass="selectedrow" /> <PagerStyle CssClass="GridPager" VerticalAlign="Middle" ShowPagerText="false" Mode="NextPrevAndNumeric" /> <MasterTableView CommandItemDisplay="None" CssClass="Frame" Width="100%" RowIndicatorColumn-Reorderable="True" AllowSorting="false" EnableHeaderContextMenu="False" AllowCustomSorting="False" AllowMultiColumnSorting="False" ShowFooter="True" ForeColor="Black" BackColor="Green"> <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" /> <Columns> <telerik:GridTemplateColumn UniqueName="TemplateColumn" HeaderText=""> <ItemTemplate> <asp:Label ID="noLabel" runat="server" Width="30px" /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="ProgramNameHours" HeaderText="" DataField="ProgramNameHours" HeaderStyle-Width="25%" /> <telerik:GridBoundColumn UniqueName="Areas" HeaderText="" DataField="Areas" HeaderStyle-Width="25%" /> </Columns> <NoRecordsTemplate> <div style="width: inherit"> There are no records to display</div> </NoRecordsTemplate> </MasterTableView> </telerik:RadGrid> </div> </asp:Panel> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <NoRecordsTemplate> <div style="width: inherit"> There are no records to display</div> </NoRecordsTemplate> </MasterTableView> <ClientSettings> <Resizing AllowColumnResize="True"></Resizing> <Selecting AllowRowSelect="False"></Selecting> </ClientSettings> </telerik:RadGrid>C# CODE:
public partial class ManagerPLProgress : System.Web.UI.Page, IManagerPLProgressView { private ManagerPLProgressPresenter presenter; protected void Page_Init(object sender, EventArgs e) { presenter = new ManagerPLProgressPresenter(this); } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { presenter.Initialize(); } } protected void ManagersPLProgressRadGrid_NeedDataSource(object sender, EventArgs e) { presenter.GetManagersPLProgress(); } protected void ManagersPLProgressRadGrid_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "HideShow") { if (Page.IsValid) { GridDataItem item = e.Item as GridDataItem; Panel Panel1 = item.FindControl("pnlTIPrograms") as Panel; if (Panel1.Visible == true) { Panel1.Visible = false; } else { Panel1.Visible = true; } } } } protected void ManagersPLProgressRadGrid_ItemDataBound(object sender, GridItemEventArgs e) { ProfessionalLearningService plSvc = new ProfessionalLearningService(); if (e.Item is GridPagerItem) { GridPagerItem pager = (GridPagerItem)e.Item; Label lbl = (Label)pager.FindControl("ChangePageSizeLabel"); if (lbl != null) lbl.Visible = false; RadComboBox combo = (RadComboBox)pager.FindControl("PageSizeComboBox"); if (combo != null) combo.Visible = false; } if (e.Item is GridDataItem) { //DateTime startDate; //DateTime endDate; //DateTime yearEndDate = new DateTime(Convert.ToInt32(DateTime.Now.Year), 12, 31); var contactID = ((CIPortal.BusinessLogic.DTO.ManagerPLProgress)(e.Item.DataItem)).ContactID.Value; if (contactID != Guid.Empty) { var pLHours = plSvc.GetPLHours(contactID, StartDate, EndDate); var reportViewer = (ReportViewer)e.Item.FindControl("reportViewer"); reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DSPLHours", pLHours)); var ManagerIdentifiedActivitiesRadGrid = (RadGrid)e.Item.FindControl("ManagerIdentifiedActivitiesRadGrid"); ManagerIdentifiedActivitiesRadGrid.DataSource = presenter.GetManagerIdentifiedActivitiesForManagerPLProgress(contactID); //plSvc.GetManagerIdentifiedActivitiesForManagerPLProgress(contactID, StartDate, EndDate); var ProgramsRadGrid = (RadGrid)e.Item.FindControl("ProgramsRadGrid"); ProgramsRadGrid.DataSource = presenter.GetProgramsForManagerPLProgress(contactID); //plSvc.GetProgramsForManagerPLProgress(contactID, StartDate, EndDate); } } } protected void DisplayButton_Click(object sender, EventArgs e) { SearchType = "daterange"; ManagersPLProgressRadGrid.Rebind(); } protected void btnSearchManagers_Click(object sender, EventArgs e) { SearchType = "contact"; ManagersPLProgressRadGrid.Rebind(); } protected void ProgramsRadGrid_NeedDataSource(object sender, EventArgs e) { } protected void ProgramsRadGrid_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridPagerItem) { GridPagerItem pager = (GridPagerItem)e.Item; Label lbl = (Label)pager.FindControl("ChangePageSizeLabel"); if (lbl != null) lbl.Visible = false; RadComboBox combo = (RadComboBox)pager.FindControl("PageSizeComboBox"); if (combo != null) combo.Visible = false; } if (e.Item is GridDataItem) { GridDataItem pager = (GridDataItem)e.Item; Label lbl = (Label)pager.FindControl("noLabel"); lbl.Text = (e.Item.ItemIndex + 1).ToString(); } } protected void ManagerIdentifiedActivitiesRadGrid_NeedDataSource(object sender, EventArgs e) { } protected void ManagerIdentifiedActivitiesRadGrid_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridPagerItem) { GridPagerItem pager = (GridPagerItem)e.Item; Label lbl = (Label)pager.FindControl("ChangePageSizeLabel"); if (lbl != null) lbl.Visible = false; RadComboBox combo = (RadComboBox)pager.FindControl("PageSizeComboBox"); if (combo != null) combo.Visible = false; } if (e.Item is GridDataItem) { GridDataItem pager = (GridDataItem)e.Item; Label lbl = (Label)pager.FindControl("numLabel"); lbl.Text = (e.Item.ItemIndex + 1).ToString(); } }}