I am attempting to use a toolbar to hide and show columns client side depending upon the desire of the user. However, when I use the .set_visible(true/false), only the column header is hidden/shown. When I use masterTable.showColumn(idx), nothing changes. I'm pretty sure I might be doing something wrong, but I'm not sure what.
Here's the definition of the toolbar:
Here's the definition of the grid:
Finally, the javascript:
Thanks for any insight or better ways of handling this!
Here's the definition of the toolbar:
<telerik:RadToolBar ID="MainToolBar" runat="server" Skin="Vista" AutoPostBack="true" |
OnClientButtonClicked="ToolbarButtonClicked"> |
<ExpandAnimation Type="OutQuad" Duration="300" /> |
<CollapseAnimation Type="OutQuad" Duration="300" /> |
<Items> |
<telerik:RadToolBarButton runat="server" Text="Bulk Edit" PostBack="false" ToolTip="Allows you to make sweeping changes to multiple cost centers" |
OnLoad="CheckForPortalAdmin" /> |
<telerik:RadToolBarButton runat="server" Text="Bulk Approve" PostBack="false" ToolTip="Allows you to approve multiple cost centers at a time." |
OnLoad="CheckForPortalAdmin" /> |
<telerik:RadToolBarButton IsSeparator="true" OnLoad="CheckForPortalAdmin" /> |
<telerik:RadToolBarButton Checked="false" Text="Previous Budget" CheckOnClick="true" |
AllowSelfUnCheck="true" PostBack="false" CheckedImageUrl="Images/columnremoveicon.gif" |
Group="PBDG" ImageUrl="Images/columnicon.gif" /> |
<telerik:RadToolBarButton Checked="false" Text="Previous Actual" CheckOnClick="true" |
AllowSelfUnCheck="true" PostBack="false" CheckedImageUrl="Images/columnremoveicon.gif" |
Group="PACT" ImageUrl="Images/columnicon.gif" /> |
<telerik:RadToolBarButton Checked="true" Text="Year To Date" CheckOnClick="true" |
AllowSelfUnCheck="true" PostBack="false" CheckedImageUrl="Images/columnremoveicon.gif" |
Group="YTD" ImageUrl="Images/columnicon.gif" /> |
<telerik:RadToolBarButton IsSeparator="true" /> |
<telerik:RadToolBarButton runat="server" Text="Export" ImageUrl="~/Images/export.gif" |
CommandName="Export"> |
</telerik:RadToolBarButton> |
</Items> |
</telerik:RadToolBar> |
Here's the definition of the grid:
<telerik:RadGrid ID="CurrentCostCentersGrid" runat="server" Skin="Vista" AllowMultiRowSelection="True" |
AllowMultiRowEdit="True" AllowFilteringByColumn="false" ShowGroupPanel="True" |
AllowPaging="True" DataSourceID="DataSourceUnits" GridLines="Horizontal" AutoGenerateColumns="False" |
PageSize="50" ShowFooter="true" Width="100%"> |
<ClientSettings AllowDragToGroup="true" AllowGroupExpandCollapse="true" AllowColumnsReorder="false" |
AllowExpandCollapse="true" AllowColumnHide="true"> |
<Selecting AllowRowSelect="true" /> |
<ClientEvents OnRowSelected="CostCenterSelected" OnRowDeselected="CostCenterUnselected" |
OnRowSelecting="checkValidRowTarget" OnRowDeselecting="checkValidRowTarget" /> |
</ClientSettings> |
<GroupPanel Enabled="true" Text="Groups"> |
</GroupPanel> |
<PagerStyle Mode="NextPrevAndNumeric" NextPageText="Next" PrevPageText="Previous" /> |
<MasterTableView ShowGroupFooter="true" ShowFooter="true" DataSourceID="DataSourceUnits" |
DataKeyNames="CostCenterItemID" CommandItemDisplay="None" ClientDataKeyNames="CostCenterItemID"> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</RowIndicatorColumn> |
<ExpandCollapseColumn Visible="False" UniqueName="ExpandColumn"> |
<HeaderStyle Width="20px"></HeaderStyle> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridTemplateColumn UniqueName="StatusIcon" Groupable="false" DataField="StatusName"> |
<ItemTemplate> |
<asp:Image ID="StatusIcon" runat="server" ImageUrl='<%# "./images/statusicons/" + Eval("StatusName") + ".png" %>' |
AlternateText='<%#Eval("StatusName") %>' /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridBoundColumn UniqueName="Status" Groupable="false" Display="false" DataField="StatusName" /> |
<telerik:GridClientSelectColumn UniqueName="ClientSideSelect"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Center" /> |
</telerik:GridClientSelectColumn> |
<telerik:GridBoundColumn HeaderText="Fund" DataField="FundID" AllowFiltering="true" |
DataType="System.Int32" SortExpression="FundID" ReadOnly="True" UniqueName="FundID"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Center" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Unit" DataField="UnitID" AllowFiltering="true" |
DataType="System.Int32" SortExpression="UnitID" ReadOnly="True" UniqueName="UnitID"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Center" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Object" DataField="LineItemID" AllowFiltering="true" |
DataType="System.Int32" SortExpression="LineItemID" ReadOnly="True" UniqueName="LineItemID"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Center" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Description" DataField="LineItemName" SortExpression="LineItemName" |
UniqueName="Description" ReadOnly="true" Groupable="false"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Left" Wrap="true" Width="150px" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Prev Budget" DataField="PreviousBudget" AllowFiltering="true" |
DataType="System.Decimal" SortExpression="PreviousBudget" UniqueName="PreviousBudget" |
DataFormatString="{0:C}" ReadOnly="True" Aggregate="Sum" FooterAggregateFormatString="{0:C}" |
Groupable="false"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" Width="100px" /> |
<FooterStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Prev Actual" DataField="PreviousActual" DataType="System.Decimal" |
SortExpression="PreviousActual" UniqueName="PreviousActual" DataFormatString="{0:C}" |
Groupable="false" Aggregate="Sum" FooterAggregateFormatString="{0:C}"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" Width="100px" /> |
<FooterStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Current Budget" DataField="CurrentBudget" DataType="System.Decimal" |
SortExpression="CurrentBudget" UniqueName="CurrentBudget" DataFormatString="{0:C}" |
Groupable="false" Aggregate="Sum" FooterAggregateFormatString="{0:C}"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" Width="100px" /> |
<FooterStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="YTD" DataField="CurrentYTD" DataType="System.Decimal" |
SortExpression="CurrentYTD" UniqueName="CurrentYTD" DataFormatString="{0:C}" |
Groupable="false" Aggregate="Sum" FooterAggregateFormatString="{0:C}"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" Width="100px" /> |
<FooterStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn HeaderText="Proposed" DataField="ProposedBudget" DataType="System.Decimal" |
SortExpression="ProposedBudget" UniqueName="ProposedBudget" Groupable="false" |
Aggregate="Sum" FooterAggregateFormatString="{0:C}" DataFormatString="{0:C}"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" Width="100px" /> |
<FooterStyle VerticalAlign="Top" HorizontalAlign="Right" Wrap="false" /> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Category" EmptyDataText="&nbsp;" HeaderText="Category" |
SortExpression="Category" UniqueName="Category"> |
<ItemStyle VerticalAlign="Top" HorizontalAlign="Left" Wrap="false" Width="115px" |
Font-Size="10px" /> |
</telerik:GridBoundColumn> |
<telerik:GridTemplateColumn HeaderText="Modified" DataField="ModifyDate" UniqueName="Modified" |
Groupable="false"> |
<ItemTemplate> |
<strong> |
<%#Eval("ModifyBy")%></strong><br /> |
<%#Eval("ModifyDate")%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
</Columns> |
<DetailTables> |
<telerik:GridTableView DataSourceID="DataSourceHistory" AutoGenerateColumns="false" |
ShowHeader="false" GroupsDefaultExpanded="false" NoDetailRecordsText="No notes currently exist for this item" |
Width="100%" CommandItemDisplay="Top" Frame="Void" Name="RequestHistory"> |
<CommandItemTemplate> |
<telerik:RadToolBar ID="DetailsToolbar" runat="server" Skin="Vista" Width="100%" |
AutoPostBack="true" OnClientLoad="SetNestedToolbar"> |
<ExpandAnimation Type="OutQuad" Duration="150" /> |
<CollapseAnimation Type="InQuad" Duration="150" /> |
<Items> |
<telerik:RadToolBarButton Text="Make Request" CommandName="MakeRequest" ImageUrl="Images/request.gif"> |
</telerik:RadToolBarButton> |
<telerik:RadToolBarButton IsSeparator="true"> |
</telerik:RadToolBarButton> |
<telerik:RadToolBarButton Text="Approval" CommandArgument="Approval"> |
</telerik:RadToolBarButton> |
</Items> |
</telerik:RadToolBar> |
</CommandItemTemplate> |
<ParentTableRelation> |
<telerik:GridRelationFields MasterKeyField="CostCenterItemID" DetailKeyField="ItemID" /> |
</ParentTableRelation> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</RowIndicatorColumn> |
<ExpandCollapseColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridTemplateColumn> |
<ItemTemplate> |
<strong> |
<%#Eval("CreateDate","{0:d}") %> <%#Eval("CreateDate","{0:t}") %> - <%#Eval("UserName")%>:</strong> <br /> |
<br /> |
<%#Eval("NoteText")%><br /> |
<br /> |
<strong style="color: Red">Amount Requested:</strong> |
<%#Eval("RequestedBudget", "{0:C}")%><hr /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
</Columns> |
</telerik:GridTableView> |
</DetailTables> |
<PagerStyle Mode="NextPrevAndNumeric" /> |
</MasterTableView> |
</telerik:RadGrid> |
Finally, the javascript:
function ToolbarButtonClicked(sender, args) |
{ |
// Used to handle the bulk approve button. |
var clickedButton = args.get_item(); |
if(clickedButton.get_text() == "Bulk Approve") // Make sure the button is the approval button |
{ |
var items = ""; |
for (idx=0;idx<currentCostCenters.length;idx++) // loop through the items in the array and build a string |
{ |
if (items.length > 0) |
{ |
items = items + ";" |
} |
items = items + currentCostCenters[idx]; |
} |
window.radopen("BulkApproveItems.aspx?keys=" + items,"BulkApprove"); |
return false; |
} |
if(clickedButton.get_text() == "Bulk Edit") // Make sure the button is the edit button |
{ |
var items = ""; |
for (idx=0;idx<currentCostCenters.length;idx++) // loop through the items in the array and build a string |
{ |
if (items.length > 0) |
{ |
items = items + ";" |
} |
items = items + currentCostCenters[idx]; |
} |
window.radopen("BulkEditItems.aspx?keys=" + items,"BulkEdit"); |
return false; |
} |
if(clickedButton.get_text() == "Previous Budget") |
{ |
ShowHideColumn('PreviousBudget'); |
} |
if(clickedButton.get_text() == "Previous Actual") |
{ |
ShowHideColumn('PreviousActual'); |
} |
if(clickedButton.get_text() == "Year To Date") |
{ |
ShowHideColumn('CurrentYTD'); |
} |
} |
function ShowHideColumn(uniqueName) |
{ |
var masterTable = $find('<%= CurrentCostCentersGrid.ClientID %>').get_masterTableView(); |
var columns = masterTable.get_columns(); |
for(idx=0;idx<columns.length;idx++) |
{ |
var column = columns[idx]; |
if(column.get_uniqueName() == uniqueName) |
{ |
if (column.get_visible() == true) |
{ |
masterTable.showColumn(idx); |
break; |
} |
else |
{ |
masterTable.hideColumn(idx); |
break; |
} |
} |
} |
} |
Thanks for any insight or better ways of handling this!