title | description | type | page_title | slug | res_type |
---|---|---|---|---|---|
Prevent columns from being hidden via the HeaderContextMenu |
Prevent columns from being hidden via the HeaderContextMenu |
how-to |
Prevent columns from being hidden via the HeaderContextMenu - RadGrid |
grid-prevent-hiding-columns-via-the-headercontextmenu |
kb |
How do I prevent certain columns from appearing in the HeaderContextMenu? I don't want users to hide some columns.
The RadContextMenu is implemented using a RadMenu - which provides access to the full RadMenu API. When the RadContextMenu is opened, a client-side event can be triggered. That event can be used to hide specific elements in the RadMenu - making it impossible for them to be selected.
In the RadGrid markup, create an event handler for the RadContextMenu using the OnClientItemOpening event.
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
FilterType="HeaderContext" EnableHeaderContextFilterMenu="true" EnableHeaderContextMenu="true">
<MasterTableView>
<Columns>
<telerik:GridBoundColumn DataField="Id" />
<telerik:GridBoundColumn DataField="Name" />
</Columns>
</MasterTableView>
<HeaderContextMenu OnClientItemOpening="hideColumnOption" />
</telerik:RadGrid>
Use JavaScript to add the Display: None style to any items you want to be hidden. Items are selected by Index.
function hideColumnOption(sender, args) {
var item = args.get_item();
//Hide the column at index 1
item.get_items().getItem(1).get_element().style.display = "none";
}