Answer:
We suggest using the Hidden property value in args.ContextMenuObj to achieve this requirement. Hidden property is used to hide or show the menu item.
<SfTreeGrid DataSource="@TreeData" @ref="TreeGrid" IdMapping="TaskId" ParentIdMapping="ParentId" ContextMenuItems="@(new
List() { new ContextMenuItemModel { Text = "Copy with headers", Target =
".e-content", Id =
"copywithheader" },new
ContextMenuItemModel { Text = "save changes", Target = ".e-content", Id =
"savechange" },new
ContextMenuItemModel { Text = "print", Target = ".e-content", Id =
"print" } })" TreeColumnIndex="1">
<TreeGridEvents ContextMenuOpen="OnContextMenuOpen" ContextMenuItemClicked="OnContextClick" TValue="BusinessObject">TreeGridEvents>
<TreeGridColumns>
<TreeGridColumn Field="TaskId" HeaderText="Task ID" IsPrimaryKey="true" Width="80" TextAlign="Syncfusion.Blazor.Grids.TextAlign.Right">TreeGridColumn>
……
<TreeGridColumn Field="Priority" HeaderText="Priority" Width="80">TreeGridColumn>
TreeGridColumns>
SfTreeGrid>
public void OnContextMenuOpen(ContextMenuOpenEventArgs<BusinessObject> Args)
{
if (Args.RowInfo.RowData.TaskName.StartsWith("Parent Task 2"))
{
Args.ContextMenuObj.Items[0].Hidden = true;
}
else
{
Args.ContextMenuObj.Items[0].Hidden = false;
}
} |
Find the sample to hide TreeGrid context menu particular items from here.