I have a parent child heirarchial grid but I am having issues when I export the grid.
The master records don't start from the first column and seems to be in the end.
I would like the parent records to start from column A and the child records to be indented inside.
Attached is a screenshot and my grid code:
code behind event handlers:
Any help is appreciated.
The master records don't start from the first column and seems to be in the end.
I would like the parent records to start from column A and the child records to be indented inside.
Attached is a screenshot and my grid code:
.aspx
<
telerik:RadGrid
ID
=
"rgBeneficiary"
runat
=
"server"
GridLines
=
"Vertical"
AllowPaging
=
"true"
AllowAutomaticUpdates
=
"false"
AllowAutomaticInserts
=
"false"
AutoGenerateColumns
=
"False"
EnableLinqExpressions
=
"false"
AllowSorting
=
"true"
AllowAutomaticDeletes
=
"false"
Skin
=
"MBen"
EnableEmbeddedSkins
=
"false"
DataSourceID
=
"_dataSrcBeneficiaries"
AllowCustomPaging
=
"false"
AllowFilteringByColumn
=
"true"
Width
=
"100%"
OnPreRender
=
"rgBeneficiary_PreRender"
OnItemCommand
=
"rgBeneficiary_ItemCommand"
OnItemCreated
=
"rgBeneficiary_ItemCreated"
PageSize
=
"15"
ImagesPath
=
"../../App_Themes/MBen/Grid"
>
<
MasterTableView
TableLayout
=
"Fixed"
HierarchyDefaultExpanded
=
"false"
HierarchyLoadMode
=
"ServerBind"
CommandItemDisplay
=
"Top"
ExpandCollapseColumn-CollapseImageUrl
=
"../../App_Themes/MBen/Grid/Collapse.gif"
HorizontalAlign
=
"Right"
ExpandCollapseColumn-Display
=
"false"
RowIndicatorColumn-Display
=
"false"
ExpandCollapseColumn-ExpandImageUrl
=
"../../App_Themes/MBen/Grid/Expand.gif"
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
ShowExportToExcelButton
=
"true"
ExportToExcelText
=
""
ExportToCsvText
=
""
ExportToPdfText
=
""
ExportToWordText
=
""
ShowExportToPdfButton
=
"true"
ShowExportToWordButton
=
"true"
ShowExportToCsvButton
=
"true"
ShowAddNewRecordButton
=
"false"
/>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"TemplateColumn"
AllowFiltering
=
"false"
HeaderStyle-Width
=
"3%"
>
<
ItemTemplate
>
<
asp:ImageButton
ID
=
"btnCollapse"
runat
=
"server"
CommandName
=
"ExpandCollapse"
ImageUrl
=
"~/App_Themes/MBen/Grid/Collapse.gif"
ToolTip
=
"Collapse"
Visible
=
"False "
/>
<
asp:ImageButton
ID
=
"btnExpand"
runat
=
"server"
CommandName
=
"ExpandCollapse"
ImageUrl
=
"~/App_Themes/MBen/Grid/Expand.gif"
ToolTip
=
"Expand"
/>
</
ItemTemplate
>
<
HeaderTemplate
>
<
asp:ImageButton
ID
=
"ExpandAll"
runat
=
"server"
CommandName
=
"ExpandAll"
ImageUrl
=
"~/App_Themes/MBen/Grid/Expand.gif"
ToolTip
=
"ExpandAll"
/>
<
asp:ImageButton
ID
=
"CollapseAll"
runat
=
"server"
CommandName
=
"CollapseAll"
Visible
=
"False"
ImageUrl
=
"~//App_Themes/MBen/Grid/Collapse.gif"
ToolTip
=
"CollapseAll"
/>
</
HeaderTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"FullName"
UniqueName
=
"FullName"
HeaderText
=
"Participant Name"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
AutoPostBackOnFilter
=
"true"
FilterControlWidth
=
"125px"
FilterControlToolTip
=
"Input name or part of name to search"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"EmployeeCode"
UniqueName
=
"EmployeeCode"
HeaderText
=
"Participant Code"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
AutoPostBackOnFilter
=
"true"
FilterControlWidth
=
"75px"
FilterControlToolTip
=
"Input a code to search"
/>
</
Columns
>
<
DetailTables
>
<
telerik:GridTableView
DataKeyNames
=
"BeneficiaryID"
DataSourceID
=
"_dataSrcParticipantBeneficiaries"
Width
=
"100%"
runat
=
"server"
AllowFilteringByColumn
=
"false"
ShowFooter
=
"true"
HorizontalAlign
=
"Right"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"ParticipantID"
MasterKeyField
=
"ParticipantID"
/>
</
ParentTableRelation
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"BeneficiaryID"
UniqueName
=
"BeneficiaryID"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Beneficiary"
UniqueName
=
"Beneficiary"
HeaderText
=
"Beneficiary Name"
AllowFiltering
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"BeneficiaryType"
UniqueName
=
"BeneficiaryType"
HeaderText
=
"Beneficiary Type"
HeaderStyle-Width
=
"15%"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"BeneficiaryRelationship"
UniqueName
=
"BeneficiaryRelationship"
HeaderText
=
"Relationship"
AllowFiltering
=
"false"
HeaderStyle-Width
=
"15%"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"BeneficiaryPercent"
UniqueName
=
"BeneficiaryPercent"
HeaderText
=
"Beneficiary Percent"
AllowFiltering
=
"false"
HeaderStyle-Width
=
"18%"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
telerik:GridTableView
>
</
DetailTables
>
</
MasterTableView
>
</
telerik:RadGrid
>
code behind event handlers:
protected void rgBeneficiary_PreRender(object source, EventArgs e)
{
if (rgBeneficiary.MasterTableView.Items.Count == 0)
{
rgBeneficiary.ShowFooter = false;
}
RadAjaxManager.GetCurrent(Page).ClientEvents.OnRequestStart = "RequestStart";
}
protected void rgBeneficiary_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName.Contains("Export"))
{
if (e.CommandName == "ExportToCsv")
rgBeneficiary.ExportSettings.ExportOnlyData = false;
rgBeneficiary.MasterTableView.HierarchyDefaultExpanded = true;
}
#region Expand/Collapse All
if (e.CommandName == RadGrid.ExpandCollapseCommandName)
{
(e.Item.FindControl("btnExpand") as ImageButton).Visible = !(e.Item.FindControl("btnExpand") as ImageButton).Visible;
(e.Item.FindControl("btnCollapse") as ImageButton).Visible = !(e.Item.FindControl("btnCollapse") as ImageButton).Visible;
}
if (e.CommandName == "ExpandAll")
{
//Looping through each DataItem and making the "btnExpand" image button in the item visibility to false and "btnCollapse" visibility to true
foreach (GridDataItem GridDataItem in rgBeneficiary.MasterTableView.GetItems(new GridItemType[] { GridItemType.Item, GridItemType.AlternatingItem }))
{
ImageButton btnExpand = (ImageButton)GridDataItem.FindControl("btnExpand");
btnExpand.Visible = false;
ImageButton btnCollapse = (ImageButton)GridDataItem.FindControl("btnCollapse");
btnCollapse.Visible = true;
}
//Exapanding the DataItem
foreach (GridDataItem item in rgBeneficiary.Items)
{
item.Expanded = true;
}
//Hiding the CollapseAll image in the header to true and ExpandAll image in the header to false
GridHeaderItem GridHeaderItem = e.Item as GridHeaderItem;
ImageButton imgCollapseAll = (ImageButton)GridHeaderItem.FindControl("CollapseAll");
imgCollapseAll.Visible = true;
ImageButton imgExpandAll = (ImageButton)GridHeaderItem.FindControl("ExpandAll");
imgExpandAll.Visible = false;
}
if (e.CommandName == "CollapseAll")
{
//Looping through each DataItem and making the "btnExpand" image button in the item visibility to true and "btnCollapse" visibility to false
foreach (GridDataItem GridDataItem in rgBeneficiary.MasterTableView.GetItems(new GridItemType[] { GridItemType.Item, GridItemType.AlternatingItem }))
{
ImageButton btnExpand = (ImageButton)GridDataItem.FindControl("btnExpand");
btnExpand.Visible = true;
ImageButton btnCollapse = (ImageButton)GridDataItem.FindControl("btnCollapse");
btnCollapse.Visible = false;
}
//Collapsing the DataItem
foreach (GridDataItem item in rgBeneficiary.Items)
{
item.Expanded = false;
}
//Hiding the CollapseAll image in the header to false and ExpandAll image in the header to true
GridHeaderItem GridHeaderItem = e.Item as GridHeaderItem;
ImageButton imgCollapseAll = (ImageButton)GridHeaderItem.FindControl("CollapseAll");
imgCollapseAll.Visible = false;
ImageButton imgExpandAll = (ImageButton)GridHeaderItem.FindControl("ExpandAll");
imgExpandAll.Visible = true;
}
#endregion
}
protected void rgBeneficiary_ItemCreated(object source, GridItemEventArgs e)
{
//removes unwanted line from commanditemdisplay
if (e.Item is GridCommandItem)
{
((Table)e.Item.Cells[0].Controls[0]).Rows[0].Cells[1].Controls.RemoveAt(1);
}
}
Any help is appreciated.