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();
}
}
}
Greetings All!
I just started using Telerik Reporting Q1 2014 SP1 (8.0.14.507) and am having a hair-pulling issue regarding report parameters. I have 5 report parameters on the report, and I am passing them values via an ASP.NET 4.5 page just prior to showing the report viewer:
01.
protected
void
Page_Load(
object
sender, EventArgs e)
02.
{
03.
if
(!Page.IsPostBack)
04.
{
05.
// TEMPORARY!!! Only Use For Development if viewing this page directly!!
06.
//Session["REPORT_REPAIR_ID"] = 7;
07.
08.
if
(Session[
"REPORT_REPAIR_ID"
] !=
null
)
09.
{
10.
TypeReportSource src =
new
TypeReportSource();
11.
12.
src.TypeName =
"Halliburton.DBS.AssetRepairTracker.Reports.RepairOrder, Halliburton.DBS.AssetRepairTracker"
;
13.
14.
src.Parameters.Add(
new
Telerik.Reporting.Parameter(
"ReportID"
, Convert.ToInt32(Session[
"REPORT_REPAIR_ID"
])));
15.
src.Parameters.Add(
new
Telerik.Reporting.Parameter(
"MfgConnection"
,
16.
WebConfigurationManager.ConnectionStrings[
"ManufactureSupport"
].ConnectionString));
17.
src.Parameters.Add(
new
Telerik.Reporting.Parameter(
"AssetConnection"
,
18.
WebConfigurationManager.ConnectionStrings[
"AssetRepair"
].ConnectionString));
19.
src.Parameters.Add(
new
Telerik.Reporting.Parameter(
"DBProvider"
, WebConfigurationManager.ConnectionStrings[
"AssetRepair"
].ProviderName));
20.
src.Parameters.Add(
new
Telerik.Reporting.Parameter(
"CryptoKey"
,
this
.CryptoKey));
21.
22.
this
.trvReportViewer.ReportSource = src;
23.
}
24.
else
25.
throw
new
Exception(
"Bad Redirect"
);
26.
}
27.
}
However when the report is initialized, and I peak at the parameter collection, all the parameters are null (or empty). This is causing an invalid parameter value exception when the parameters validate (because I have AllowNull = false)
(See attached screenshots)