Hi there,
I have gone through almost all the posts in the forum, however, none of them has helped me :(
I have got a Grid which contains a nested view template object and that consists of a grid as follow:
My approach is to export the grid into an excel or a pdf file with the following code:
The above code jumps into "JobStatusGrid_NeedDataSource" method in order to populate the nested data grid, however, it doesn't help me out to come up in the exported file.
Could you please advise me ?
Thank you
I have gone through almost all the posts in the forum, however, none of them has helped me :(
I have got a Grid which contains a nested view template object and that consists of a grid as follow:
<
telerik:RadGrid
AutoGenerateColumns
=
"False"
ID
=
"RadGrid1"
AllowFilteringByColumn
=
"True"
AllowPaging
=
"True"
AllowSorting
=
"True"
runat
=
"server"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnItemCreated
=
"RadGrid1_ItemCreated"
EnableLinqExpressions
=
"true"
HtmlEncode
=
"true"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
GroupByExpression
=
"JobStatusID Group By JobStatusID"
ShowGroupPanel
=
"True"
CellSpacing
=
"-1"
GridLines
=
"Both"
Skin
=
"Office2010Silver"
EnableViewState
=
"true"
Width
=
"100%"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
ClientSettings
AllowKeyboardNavigation
=
"true"
>
</
ClientSettings
>
<
ExportSettings
OpenInNewWindow
=
"true"
FileName
=
"i-Dispatch General Report"
>
<
Pdf
PageHeight
=
"210mm"
PageWidth
=
"297mm"
DefaultFontFamily
=
"Arial Unicode MS"
PageTopMargin
=
"45mm"
BorderStyle
=
"Medium"
BorderColor
=
"#666666"
PaperSize
=
"A4"
>
</
Pdf
>
</
ExportSettings
>
<
MasterTableView
Width
=
"100%"
DataKeyNames
=
"JobID"
HierarchyLoadMode
=
"ServerOnDemand"
>
<
Columns
>
<
telerik:GridMaskedColumn
DataField
=
"JobID"
HeaderText
=
"JobID#"
FilterControlWidth
=
"50px"
AutoPostBackOnFilter
=
"false"
CurrentFilterFunction
=
"EqualTo"
FilterDelay
=
"2000"
ShowFilterIcon
=
"false"
Mask
=
"#####"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
></
ModelErrorMessage
>
</
ColumnValidationSettings
>
</
telerik:GridMaskedColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Customer Ref No"
DataField
=
"JobCustomerRefNo"
UniqueName
=
"JobCustomerRefNo"
SortExpression
=
"JobCustomerRefNo"
HeaderStyle-Width
=
"180px"
FilterControlAltText
=
"Filter JobCustomerRefNo column"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
></
ModelErrorMessage
>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"JobTitle"
FilterControlAltText
=
"Filter JobTitle column"
HeaderText
=
"Job Title"
SortExpression
=
"JobTitle"
UniqueName
=
"JobTitle"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
/>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
DataField
=
"JobBookedDate"
PickerType
=
"DatePicker"
EnableTimeIndependentFiltering
=
"true"
DataFormatString
=
"{0:dd/MM/yyyy HH:mm }"
DataType
=
"System.DateTime"
FilterControlAltText
=
"Filter JobBookedDate column"
HeaderText
=
"Job Booked Date"
SortExpression
=
"JobBookedDate"
UniqueName
=
"JobBookedDate"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
/>
</
ColumnValidationSettings
>
</
telerik:GridDateTimeColumn
>
<
telerik:GridBoundColumn
DataField
=
"JobAddress1"
FilterControlAltText
=
"Filter JobAddress1 column"
HeaderText
=
"Address"
SortExpression
=
"JobAddress1"
UniqueName
=
"JobAddress1"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
/>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"JobSuburb"
FilterControlAltText
=
"Filter JobSuburb column"
HeaderText
=
"Suburb"
SortExpression
=
"JobSuburb"
UniqueName
=
"JobSuburb"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
/>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"JobPostCode"
FilterControlAltText
=
"Filter JobPostCode column"
HeaderText
=
"PostCode"
SortExpression
=
"JobPostCode"
UniqueName
=
"JobPostCode"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
/>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"JobState"
FilterControlAltText
=
"Filter JobState column"
HeaderText
=
"State"
SortExpression
=
"JobState"
UniqueName
=
"JobState"
>
<
ColumnValidationSettings
>
<
ModelErrorMessage
Text
=
""
/>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"JobStatusID"
HeaderText
=
"Status Type"
UniqueName
=
"JobStatusID"
HeaderStyle-Width
=
"200px"
SortExpression
=
"JobStatusID"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"comboJobStatus"
DataTextField
=
"JobStatusName"
DataValueField
=
"JobStatusID"
Height
=
"100px"
AppendDataBoundItems
=
"true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("JobStatusID").CurrentFilterValue %>'
runat="server" OnClientSelectedIndexChanged="JobStatusIndexChanged">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock3"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function JobStatusIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("JobStatusID", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# Eval("JobStatus") %>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"ClientID"
HeaderText
=
"Client"
UniqueName
=
"ClientID"
HeaderStyle-Width
=
"200px"
SortExpression
=
"ClientID"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"comboClient"
DataTextField
=
"ClientName"
DataValueField
=
"ClientID"
Height
=
"100px"
AppendDataBoundItems
=
"true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("ClientID").CurrentFilterValue %>'
runat="server" OnClientSelectedIndexChanged="ClientIndexChanged">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock2"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function ClientIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("ClientID", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# Eval("Client") %>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"AssignedStaffID"
HeaderText
=
"Staff"
UniqueName
=
"AssignedStaffID"
HeaderStyle-Width
=
"200px"
SortExpression
=
"AssignedStaffID"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"comboStaff"
DataTextField
=
"StaffName"
DataValueField
=
"StaffID"
Height
=
"100px"
AppendDataBoundItems
=
"true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("AssignedStaffID").CurrentFilterValue %>'
runat="server" OnClientSelectedIndexChanged="StaffIndexChanged">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock10"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function StaffIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("AssignedStaffID", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# Eval("AssignedStaff") %>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
NestedViewTemplate
>
<
asp:Panel
runat
=
"server"
ID
=
"InnerContainer"
CssClass
=
"viewWrap"
Visible
=
"false"
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"JobStatusGrid"
OnNeedDataSource
=
"JobStatusGrid_NeedDataSource"
>
<
MasterTableView
ShowHeader
=
"true"
AutoGenerateColumns
=
"False"
AllowPaging
=
"true"
DataKeyNames
=
"JobStatusHistoryID"
PageSize
=
"7"
HierarchyLoadMode
=
"Client"
>
<
Columns
>
<
telerik:GridBoundColumn
HeaderText
=
"Status Type"
HeaderButtonType
=
"TextButton"
DataField
=
"JobStatus"
UniqueName
=
"JobStatusID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Created By"
HeaderButtonType
=
"TextButton"
DataField
=
"CreatedBy"
UniqueName
=
"CreatedBy"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Created On"
HeaderButtonType
=
"TextButton"
DataField
=
"CreatedOn"
UniqueName
=
"CreatedOn"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
asp:Panel
>
</
NestedViewTemplate
>
</
MasterTableView
>
<
ClientSettings
AllowDragToGroup
=
"true"
>
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
My approach is to export the grid into an excel or a pdf file with the following code:
protected
void
btnGeneralReportPDF_Click(
object
sender, ImageClickEventArgs e)
{
//RadGrid1.ExportSettings.ExportOnlyData = true;
RadGrid1.ExportSettings.OpenInNewWindow =
true
;
//RadGrid1.ExportSettings.IgnorePaging = true;
headerMiddleCell = headerMiddleCell.Replace(
"<$companyname$>"
, "company name");
headerMiddleCell = headerMiddleCell.Replace(
"<$reportname$>"
,
"Report"
);
headerMiddleCell = headerMiddleCell.Replace(
"<$daterange$>"
, "1-1-2015 / 2-2-2015"
);
RadGrid1.ExportSettings.Pdf.PageHeader.MiddleCell.Text = headerMiddleCell;
// to get lanscape orientation
RadGrid1.ExportSettings.Pdf.PageHeight = Unit.Parse(
"162mm"
);
RadGrid1.ExportSettings.Pdf.PageWidth = Unit.Parse(
"600mm"
);
foreach
(GridDataItem gi
in
RadGrid1.MasterTableView.Items)
{
gi.Expanded =
true
;
if
(gi.HasChildItems)
{
RadGrid rgHeader = (RadGrid)gi.ChildItem.NestedViewCell.Controls[0].Controls[1].Controls[1];
rgHeader.Rebind();
}
}
RadGrid1.MasterTableView.HierarchyDefaultExpanded =
true
;
//RadGrid1.Rebind();
RadGrid1.MasterTableView.ExportToPdf();
}
The above code jumps into "JobStatusGrid_NeedDataSource" method in order to populate the nested data grid, however, it doesn't help me out to come up in the exported file.
Could you please advise me ?
Thank you