Hi all,
Using VS 2010 with UI for ASP.NET AJAX Q2 2014 SP1.
My intentions are:
1) Export only Parent Grid and 2 Child Grid Rows in Each page.
2) Repeat the Parent Grid Column Header in each New Page.
3) Bottom of PDF export, show page count (i.e. 1 of n etc.).
4) If Last Page has only 1 child row, export it with Parent Grid.Below are my codes and attached is desired PDF export.
Thanks
gc_0620
_______________
Using VS 2010 with UI for ASP.NET AJAX Q2 2014 SP1.
My intentions are:
1) Export only Parent Grid and 2 Child Grid Rows in Each page.
2) Repeat the Parent Grid Column Header in each New Page.
3) Bottom of PDF export, show page count (i.e. 1 of n etc.).
4) If Last Page has only 1 child row, export it with Parent Grid.Below are my codes and attached is desired PDF export.
Thanks
gc_0620
_______________
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="telerik" Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
asp:ScriptManager
runat
=
"server"
ID
=
"ScriptManager1"
/>
<
div
>
<
telerik:RadGrid
Skin
=
"Web20"
ID
=
"RadGrid1"
ShowStatusBar
=
"True"
DataSourceID
=
"SqlDataSource1"
runat
=
"server"
AutoGenerateColumns
=
"False"
AllowPaging
=
"True"
AllowMultiRowEdit
=
"True"
AllowAutomaticDeletes
=
"True"
AllowAutomaticInserts
=
"True"
AllowAutomaticUpdates
=
"True"
EnableLinqExpressions
=
"False"
AutoGenerateDeleteColumn
=
"True"
AutoGenerateEditColumn
=
"True"
OnPdfExporting
=
"RadGrid1_PdfExporting"
OnItemCreated
=
"RadGrid1_ItemCreated"
onitemdatabound
=
"RadGrid1_ItemDataBound"
ResolvedRenderMode
=
"Classic"
>
<
ExportSettings
>
<
Pdf
PageTitle
=
"Rad Grid Selected Customers Export"
/>
</
ExportSettings
>
<
PagerStyle
Mode
=
"NumericPages"
></
PagerStyle
>
<
MasterTableView
DataSourceID
=
"SqlDataSource1"
Name
=
"Master"
DataKeyNames
=
"CustomerID"
CommandItemDisplay
=
"Top"
>
<
DetailTables
>
<
telerik:GridTableView
Name
=
"Orders"
DataKeyNames
=
"OrderID"
CommandItemDisplay
=
"Top"
DataSourceID
=
"SqlDataSource2"
Width
=
"100%"
runat
=
"server"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"CustomerID"
MasterKeyField
=
"CustomerID"
/>
</
ParentTableRelation
>
<
CommandItemSettings
ExportToPdfText
=
"Export to Pdf"
></
CommandItemSettings
>
<
Columns
>
<
telerik:GridBoundColumn
SortExpression
=
"OrderID"
HeaderText
=
"OrderID"
HeaderButtonType
=
"TextButton"
DataField
=
"OrderID"
UniqueName
=
"OrderID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"OrderDate"
HeaderText
=
"Date Ordered"
HeaderButtonType
=
"TextButton"
DataField
=
"OrderDate"
UniqueName
=
"OrderDate"
DataFormatString
=
"{0:D}"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"Freight"
HeaderText
=
"Freight"
HeaderButtonType
=
"TextButton"
DataField
=
"Freight"
UniqueName
=
"Freight"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
table
id
=
"ChildTableMain"
class
=
"form-controls"
cellspacing
=
"2"
cellpadding
=
"1"
width
=
"99.9%"
border
=
"0"
rules
=
"none"
style
=
"border-collapse: collapse; background: #DCDCDC; border-width:0px;"
>
<
colgroup
>
<
col
/>
</
colgroup
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"OrderDetailLabel"
CssClass
=
"form-edit_Update"
runat
=
"server"
Text
=
"Order details"
Font-Underline
=
"True"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
table
id
=
"ChildTableDetail"
border
=
"0"
style
=
"border-width: 0px;"
class
=
"form-controls"
width
=
"99.9%"
>
<
colgroup
>
<
col
/>
<
col
/>
<
col
/>
<
col
/>
</
colgroup
>
<
tr
>
<
td
style
=
"font-size: 11px"
>
Order ID:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtOrderID"
runat
=
"server"
Text='<%# Bind( "OrderID") %>' TabIndex="1" />
</
td
>
<
td
style
=
"font-size: 11px"
>
Date Ordered:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtOrderDate"
runat
=
"server"
Width
=
"200px"
Text='<%# Bind( "OrderDate","{0:D}") %>'
TabIndex="2" />
</
td
>
</
tr
>
<
tr
>
<
td
style
=
"font-size: 11px"
>
Freight:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtFreight"
Width
=
"300px"
runat
=
"server"
Text='<%# Bind( "Freight") %>'
TabIndex="3">
</
asp:TextBox
>
</
td
>
</
tr
>
</
table
>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
<
SortExpressions
>
<
telerik:GridSortExpression
FieldName
=
"OrderDate"
></
telerik:GridSortExpression
>
</
SortExpressions
>
</
telerik:GridTableView
>
</
DetailTables
>
<
CommandItemSettings
ExportToPdfText
=
"Export to Pdf"
></
CommandItemSettings
>
<
ExpandCollapseColumn
Visible
=
"True"
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridBoundColumn
SortExpression
=
"CustomerID"
HeaderText
=
"CustomerID"
DataField
=
"CustomerID"
UniqueName
=
"CustomerID"
ReadOnly
=
"True"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"CompanyName"
HeaderText
=
"CompanyName"
DataField
=
"CompanyName"
UniqueName
=
"CompanyName"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"ContactName"
HeaderText
=
"ContactName"
DataField
=
"ContactName"
UniqueName
=
"ContactName"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Address"
HeaderText
=
"Address"
SortExpression
=
"Address"
UniqueName
=
"Address"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
table
id
=
"Table2"
class
=
"form-controls"
cellspacing
=
"2"
cellpadding
=
"1"
width
=
"99.9%"
border
=
"0"
rules
=
"none"
style
=
"border-collapse: collapse; background: #DCDCDC; border-width:0px;"
>
<
colgroup
>
<
col
/>
</
colgroup
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"CustDetailLabel"
CssClass
=
"form-edit_Update"
runat
=
"server"
Text
=
"Customer details"
Font-Underline
=
"True"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
table
id
=
"TableDetail"
border
=
"0"
class
=
"form-controls"
style
=
"border-width: 0px"
width
=
"99.9%"
>
<
colgroup
>
<
col
/>
<
col
/>
<
col
/>
<
col
/>
</
colgroup
>
<
tr
>
<
td
style
=
"font-size: 11px"
>
Customer Id:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtCustomer"
runat
=
"server"
Text='<%# Bind( "CustomerID") %>' TabIndex="1" />
</
td
>
<
td
style
=
"font-size: 11px"
>
Contact Name:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtContact"
runat
=
"server"
Width
=
"200px"
Text='<%# Bind( "ContactName") %>'
TabIndex="2" />
</
td
>
</
tr
>
<
tr
>
<
td
style
=
"font-size: 11px"
>
Company:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtCompany"
Width
=
"200px"
runat
=
"server"
Text='<%# Bind( "CompanyName") %>'
TabIndex="3">
</
asp:TextBox
>
</
td
>
<
td
style
=
"font-size: 11px"
>
Address:
</
td
>
<
td
>
<
asp:TextBox
ID
=
"TxtAddress"
Width
=
"300px"
runat
=
"server"
Text='<%# Bind( "Address") %>'
TabIndex="3">
</
asp:TextBox
>
</
td
>
</
tr
>
</
table
>
</
td
>
</
tr
>
<
tr
visible
=
"false"
>
<
td
align
=
"right"
colspan
=
"2"
>
<
asp:Button
ID
=
"btnUpdate"
Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'>
</
asp:Button
>
<
asp:Button
ID
=
"btnCancel"
Text
=
"Cancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
></
asp:Button
>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
<
ClientSettings
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
<
br
/>
<
asp:Button
ID
=
"Button1"
runat
=
"server"
Text
=
"Export selected items with child items"
OnClick
=
"Button1_Click"
/>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [Address] FROM [Customers] WHERE ([CustomerID] <= @CustomerID)"
runat="server" DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @CustomerID"
InsertCommand="INSERT INTO [Customers] ([CustomerID], [CompanyName], [ContactName], [Address]) VALUES (@CustomerID, @CompanyName, @ContactName, @Address)"
UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName, [ContactName] = @ContactName, [Address] = @Address WHERE [CustomerID] = @CustomerID">
<
DeleteParameters
>
<
asp:Parameter
Name
=
"CustomerID"
Type
=
"String"
/>
</
DeleteParameters
>
<
SelectParameters
>
<
asp:Parameter
DefaultValue
=
"BLAUS"
Name
=
"CustomerID"
Type
=
"String"
/>
</
SelectParameters
>
<
UpdateParameters
>
<
asp:Parameter
Name
=
"CompanyName"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"ContactName"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"Address"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"CustomerID"
Type
=
"String"
/>
</
UpdateParameters
>
<
InsertParameters
>
<
asp:Parameter
Name
=
"CustomerID"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"CompanyName"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"ContactName"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"Address"
Type
=
"String"
/>
</
InsertParameters
>
</
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"SqlDataSource2"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM Orders Where CustomerID = @CustomerID"
runat="server">
<
SelectParameters
>
<
asp:SessionParameter
Name
=
"CustomerID"
SessionField
=
"CustomerID"
Type
=
"string"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
</
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;
using System.Data;
using Telerik.Web.UI;
using System.Data.SqlClient;
using Telerik.Web.UI.GridExcelBuilder;
using System.Collections.Specialized;
using System.Collections;
using System.IO;
using System.Text;
using System.Globalization;
using System.Threading;
public partial class _Default : System.Web.UI.Page
{
private void Set_Export_Options()
{
//Landscape
RadGrid1.ExportSettings.Pdf.PageHeight = Unit.Parse("8.5in");
RadGrid1.ExportSettings.Pdf.PageWidth = Unit.Parse("11in");
//// 1/2 inch margins
RadGrid1.ExportSettings.Pdf.PageLeftMargin = Unit.Parse(".5in");
RadGrid1.ExportSettings.Pdf.PageRightMargin = Unit.Parse(".5in");
RadGrid1.ExportSettings.Pdf.PageTopMargin = Unit.Parse(".5in");
RadGrid1.ExportSettings.Pdf.PageBottomMargin = Unit.Parse(".5in");
RadGrid1.ExportSettings.OpenInNewWindow = true;
RadGrid1.ExportSettings.IgnorePaging = true;
RadGrid1.ExportSettings.ExportOnlyData = true;
RadGrid1.MasterTableView.HierarchyDefaultExpanded = true;
}
public void Configure_Selected_Row_Pdf_Export(GridItem item)
{
if (item.IsInEditMode)
{
item.OwnerTableView.BorderWidth = Unit.Pixel(0);
item.Style["border-width"] = "0px";
item.Style["text-align"] = "center";
item.Style["font-family"] = "Arial";
if (item.OwnerTableView.Name == "Master")
{
item.Style["background-color"] = "#555";
item.Style["color"] = "#fff";
}
else
{
item.Style["background-color"] = "#aaa";
}
}
}
bool isExport = false;
string selectedItem = "";
protected void Button1_Click(object sender, EventArgs e)
{
Set_Export_Options();
isExport = true;
selectedItem = RadGrid1.SelectedIndexes[0];
RadGrid1.MasterTableView.ExportToPdf();
}
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
if (isExport)
{
if (e.Item.OwnerTableView.Name == "Master" && e.Item.ItemIndexHierarchical != selectedItem)
{
e.Item.Display = false;
e.Item.Expanded = false;
}
else if (e.Item is GridDataItem || e.Item is GridHeaderItem)
{
e.Item.Edit = true;
e.Item.Display = false;
e.Item.Style.Add("display", "none");
}
}
}
protected void RadGrid1_PdfExporting(object sender, GridPdfExportingArgs e)
{
e.RawHTML = e.RawHTML.Replace("99.9%", "696px");
}
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if(isExport)
Configure_Selected_Row_Pdf_Export(e.Item);
}
}