Monday, 13 February 2012

Drill Down Grid Export using Telerik Grid



Please check the below code. This is a double drill down grid.
The PDF export has following capabilities :
- Exports all the data of all the pages with the detail view
- Adds a header on top of the PDF "this is a test"

<div>
 <div id="divExportIcons" runat="server"><asp:linkbutton id="lnkPDF" runat="server" text="PDF" onclick="lnkPDF_Click"></asp:linkbutton><asp:linkbutton id="lnkExcel" runat="server" text="Excel" onclick="lnkExcel_Click"></asp:linkbutton>
 <telerik:radgrid runat="server" id="trdDemo" skin="Black" onneeddatasource="trdDemo_OnNeedDataSource"gridlines="None" allowsorting="True" allowpaging="True" autogeneratecolumns="False"showstatusbar="True" ondetailtabledatabind="trdDemo_OnDetailTableDataBind" onitemcreated="RadGrid1_ItemCreated"
 <HeaderContextMenu EnableAutoScroll="True">
 <ExportSettings IgnorePaging="true" OpenInNewWindow="true" >
 
 <SortExpressions><telerik:GridSortExpression FieldName="Plan_Name" /></SortExpressions><DetailTables>
<DetailTables>
<telerik:GridTableView Name="Employee" runat="server" ExpandCollapseColumn-ShowSortIcon="true" AutoGenerateColumns="false">
<Columns><telerik:GridBoundColumn UniqueName="Title_Id" DataField="Title_Id" DataType="System.String" HeaderText="Title_Id"> </telerik:GridBoundColumn><telerik:GridBoundColumn UniqueName="Surname" DataField="Surname" DataType="System.String" HeaderText="Surname"> </telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView></DetailTables><Columns><telerik:GridBoundColumn UniqueName="Employer_Name" DataField="Employer_Name" DataType="System.String" HeaderText="Employer_Name"> </telerik:GridBoundColumn><telerik:GridBoundColumn UniqueName="Trading_Name" DataField="Trading_Name" DataType="System.String" HeaderText="Trading Name"> </telerik:GridBoundColumn><telerik:GridBoundColumn UniqueName="Created_Dt" DataField="Created_Dt" DataType="System.DateTime" HeaderText="Created_Dt"> </telerik:GridBoundColumn></Columns><ExpandCollapseColumn Visible="True"></ExpandCollapseColumn></telerik:GridTableView>
</DetailTables> <ExpandCollapseColumn Visible="True"></ExpandCollapseColumn><Columns><telerik:GridBoundColumn UniqueName="Plan_Id" DataField="Plan_Id" DataType="System.Int32" HeaderText="Plan Id"> </telerik:GridBoundColumn><telerik:GridBoundColumn UniqueName="Plan_Name" DataField="Plan_Name" DataType="System.String" HeaderText="Plan Name"> </telerik:GridBoundColumn><telerik:GridBoundColumn UniqueName="Plan_Code" DataField="Plan_Code" DataType="System.String" HeaderText="Plan Code"> </telerik:GridBoundColumn></Columns><CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true"ShowExportToCsvButton="true" /></MasterTableView></telerik:radgrid></div>

 protected void Page_Load(object sender, EventArgs e)

{ }
protected void trdDemo_OnNeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
AAS_ProdEntities3 aasContext = new AAS_ProdEntities3();
trdDemo.DataSource = aasContext.Web_Plan.ToList<Web_Plan>();
}
 protected void trdDemo_OnDetailTableDataBind(object source, GridDetailTableDataBindEventArgs e)
{
GridDataItem gridDataItem = (GridDataItem)e.DetailTableView.ParentItem;

if (e.DetailTableView.Name == DetailTableType.Employer.ToString())
e.DetailTableView.DataSource = GetEmployerForPlan(gridDataItem.GetDataKeyValue("Plan_Id"));

if (e.DetailTableView.Name == DetailTableType.Employee.ToString())
e.DetailTableView.DataSource = GetMemberForEmployer(gridDataItem.GetDataKeyValue("Employer_Id"));
}



protected void trdDemo_OnPdfExporting(object sender, GridPdfExportingArgs e)
{
e.RawHTML =
"<div style='color: #606010; background-color: #88afea; font-weight: bold;'>this is a test</div>"
+ e.RawHTML;


}
protected void lnkPDF_Click(object sender, EventArgs e)
{
if ((trdDemo.MasterTableView.Items.Count) > 0
{
trdDemo.ExportSettings.ExportOnlyData = false;
trdDemo.ExportSettings.IgnorePaging = true;
trdDemo.MasterTableView.HierarchyDefaultExpanded = true;
trdDemo.MasterTableView.DetailTables[0].HierarchyDefaultExpanded = true;
trdDemo.MasterTableView.DetailTables[0].DetailTables[0].HierarchyDefaultExpanded = true;
trdDemo.GridLines = GridLines.Both;


trdDemo.MasterTableView.ExportToPdf();}

}

{

{
protected void lnkExcel_Click(object sender, EventArgs e)

{
if ((trdDemo.MasterTableView.Items.Count) > 0
{
trdDemo.ExportSettings.ExportOnlyData = false;
trdDemo.ExportSettings.IgnorePaging = true;
trdDemo.MasterTableView.HierarchyDefaultExpanded = true;
trdDemo.MasterTableView.DetailTables[0].HierarchyDefaultExpanded = true;
trdDemo.MasterTableView.DetailTables[0].DetailTables[0].HierarchyDefaultExpanded = true;
trdDemo.GridLines = GridLines.Both;


trdDemo.MasterTableView.ExportToExcel();
}


}{
lstMember = aasContext.GetMemberForEmployer(
}

}
private List<GetMemberForEmployer_View> GetMemberForEmployer(object employerId)

{
List<GetMemberForEmployer_View> lstMember = null;
using (AAS_ProdEntities3 aasContext = new AAS_ProdEntities3())
lstEmployer = aasContext.GetAllEmployerPerPlan(
Convert
.ToInt32(employerId)).ToList<GetMemberForEmployer_View>();


return lstMember

}
private List<GetEmployerPerPlan_View> GetEmployerForPlan(object planId)
{
List<GetEmployerPerPlan_View> lstEmployer = null;
using (AAS_ProdEntities3 aasContext = new AAS_ProdEntities3())
Convert.ToInt32(planId)).ToList<GetEmployerPerPlan_View>();
return lstEmployer;
}

}

public enum DetailTableType{
Employer,
Employee
}


</div>
<telerik:GridBoundColumn UniqueName="Given_Name" DataField="Given_Name" DataType="System.String" HeaderText="Given_Name"> </telerik:GridBoundColumn>
<telerik:GridTableView Name="Employer" runat="server" DataKeyNames="Employer_Id" ExpandCollapseColumn-ShowSortIcon="true" AutoGenerateColumns="false">
<MasterTableView DataKeyNames="Plan_Id">
</ExportSettings>
</HeaderContextMenu>
onitemcommand="RadGrid1_ItemCommand" onpdfexporting="trdDemo_OnPdfExporting">
<div>
<asp:scriptmanager id="ScriptManager1" runat="server"></asp:scriptmanager>

1 comment: