Hi,
I added an expand/collapse all button in the grid header as described in http://www.telerik.com/community/code-library/aspnet-ajax/grid/custom-expand-collapse-column-with-expandall-collapseall-image-button-in-the-header.aspx.
My grid alignment changes (the master table shrinks) when I expand the grid as shown in the attached image.
I am unable to understand why this is happening. Please help.
I added an expand/collapse all button in the grid header as described in http://www.telerik.com/community/code-library/aspnet-ajax/grid/custom-expand-collapse-column-with-expandall-collapseall-image-button-in-the-header.aspx.
My grid alignment changes (the master table shrinks) when I expand the grid as shown in the attached image.
I am unable to understand why this is happening. Please help.
6 Answers, 1 is accepted
0
Shinu
Top achievements
Rank 2
answered on 06 Jan 2012, 05:13 AM
Hello,
Check the following help documentation which explains aligning items in hierarchy.
Aligning columns in each level of hierarchical grid.
-Shinu.
Check the following help documentation which explains aligning items in hierarchy.
Aligning columns in each level of hierarchical grid.
-Shinu.
0
MBEN
Top achievements
Rank 2
Veteran
answered on 06 Jan 2012, 09:53 PM
This solution does not work for me. The issue that I am having is only when I expand the grid. The master table data seems to shrink.
I have attached another image to show how the grid looks when it is collapsed.
I have attached another image to show how the grid looks when it is collapsed.
0
Hello,
Most probably the sum of columns width inside your DetailTable is larger that the width which you have set for the RadGrid control. Therefore, I suggest that you make sure that the total width of the columns (either auto-generated or declaratively set) inside the DetailTable does not exceeds the width of the grid itself. Or you can just leave the columns without width(TableLayout to be Auto).
Kind regards,
Pavlina
the Telerik team
Most probably the sum of columns width inside your DetailTable is larger that the width which you have set for the RadGrid control. Therefore, I suggest that you make sure that the total width of the columns (either auto-generated or declaratively set) inside the DetailTable does not exceeds the width of the grid itself. Or you can just leave the columns without width(TableLayout to be Auto).
Kind regards,
Pavlina
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
0
MBEN
Top achievements
Rank 2
Veteran
answered on 09 Jan 2012, 07:40 PM
I tried removing the the width from my detail tables and setting the table layout = Auto but that still does not help.
When I click the expand button width of my master table reduces.
This is very annoying.
This does not happen when I use the regular expand collapse column button. It's only with the expand all functionality I've added.
Please help.
When I click the expand button width of my master table reduces.
This is very annoying.
This does not happen when I use the regular expand collapse column button. It's only with the expand all functionality I've added.
Please help.
0
Hi,
Could you paste your complete aspx code using the code formater tool of the ticket editor, so that we can test it locally and advice you further?
Greetings,
Pavlina
the Telerik team
Could you paste your complete aspx code using the code formater tool of the ticket editor, so that we can test it locally and advice you further?
Greetings,
Pavlina
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
0
MBEN
Top achievements
Rank 2
Veteran
answered on 09 Jan 2012, 10:32 PM
I had to change my code to put the expand/collapse All button in the commanditem template and use the default expand/collapse functionality instead.
I have below my earlier code for your reference. It will be helpful in future if the grid had an in-built expand all functionality with the help of a property itself.
.cs code
I have below my earlier code for your reference. It will be helpful in future if the grid had an in-built expand all functionality with the help of a property itself.
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <link href="../../App_Themes/MBen/Grid.MBen.css" rel="stylesheet" type="text/css" /> <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"> </asp:ScriptManagerProxy> <telerik:RadAjaxManagerProxy ID="RadAJAXManagerProxy1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="rgBeneficiary"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rgBeneficiary" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManagerProxy> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td> <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" ClientDataKeyNames="EmployeeID, ParticipantID" HierarchyLoadMode="ServerBind" CommandItemDisplay="Top" DataKeyNames="EmployeeID, ParticipantID" ExpandCollapseColumn-CollapseImageUrl="../../App_Themes/MBen/Grid/Collapse.gif" 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" /> <NoRecordsTemplate> <div style="color: Red; font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold"> <br /> Please select a plan to show activity for the specific plan. </div> </NoRecordsTemplate> <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="ParticipantID" UniqueName="ParticipantID" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="EmployeeID" UniqueName="EmployeeID" Visible="false"> </telerik:GridBoundColumn> <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" HeaderStyle-Width="50%"> </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" HeaderStyle-Width="50%" /> </Columns> <DetailTables> <telerik:GridTableView DataKeyNames="BeneficiaryID" DataSourceID="_dataSrcParticipantBeneficiaries" TableLayout="Auto" runat="server" AllowFilteringByColumn="false" ShowFooter="true"> <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> <ExpandCollapseColumn Visible="True"> </ExpandCollapseColumn> <RowIndicatorColumn Visible="false"> </RowIndicatorColumn> </MasterTableView> <ExportSettings ExportOnlyData="true" IgnorePaging="true" FileName="Export" OpenInNewWindow="true"> <Pdf PaperSize="A4" PageLeftMargin="5px" PageRightMargin="5px" PageWidth="297mm" PageHeight="210mm" /> </ExportSettings> </telerik:RadGrid> </td> </tr> </table> <asp:ObjectDataSource ID="_dataSrcBeneficiaries" runat="server" SelectMethod="ListByPlan" TypeName="DBLib.Beneficiary"> <SelectParameters> <asp:ProfileParameter Name="PlanID" PropertyName="PlanID" DefaultValue="-1" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource> <asp:ObjectDataSource ID="_dataSrcParticipantBeneficiaries" runat="server" SelectMethod="ListByParticipant" TypeName="DBLib.Beneficiary"> <SelectParameters> <asp:SessionParameter Name="ParticipantID" SessionField="ParticipantID" Type="string" /> </SelectParameters> </asp:ObjectDataSource> </asp:Content>.cs code
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; (rgBeneficiary.MasterTableView.GetItems(GridItemType.Header)[0] as GridHeaderItem)["ExpandColumn"].Visible = false; foreach (GridDataItem dataItem in rgBeneficiary.MasterTableView.Items) { dataItem["ExpandColumn"].Style["display"] = "none"; dataItem["ExpandColumn"].Visible = false; } IsExport = 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); } if (IsExport) FormatGridExport(e); }