Hi Forum,
I'm try to use the sfMenu with Custom Menu Items.
This works fine until I try to use MenuEvents to get the selected item.
After adding this line
<MenuEvents ItemSelected="SelectItem" TValue="CustomMenuItem"></MenuEvents>
A runtime error:
will be thrown.
Here is a sample Code for reproducing the problem.
@using Syncfusion.Blazor.Navigations
<li class="right-header list">
<div class="horizontal-menu">
<SfMenu Items="@MenuItems">
<MenuFieldSettings ItemId="Id" Text="Text" ParentId="ParentId"></MenuFieldSettings>
<MenuEvents ItemSelected="SelectItem" TValue="CustomMenuItem"></MenuEvents>
</SfMenu>
</div>
</li>
@code {
public List<CustomMenuItem> MenuItems = new List<CustomMenuItem>
{
new CustomMenuItem{ Id = "parent1", Text = "Events" },
new CustomMenuItem{ Id = "parent2", Text = "Movies" },
new CustomMenuItem{ Id = "parent3", Text = "Directory" },
new CustomMenuItem{ Id = "parent4", Text = "Queries", ParentId = "null" },
new CustomMenuItem{ Id = "parent5", Text = "Services", ParentId = "null" },
new CustomMenuItem{ Id = "parent6", Text = "Conferences", ParentId = "parent1" },
new CustomMenuItem{ Id = "parent7", Text = "Music", ParentId = "parent1" },
new CustomMenuItem{ Id = "parent8", Text = "Workshops", ParentId = "parent1" },
new CustomMenuItem{ Id = "parent9", Text = "Now Showing", ParentId = "parent2" },
new CustomMenuItem{ Id = "parent10", Text = "Coming Soon", ParentId = "parent2" },
new CustomMenuItem{ Id = "parent10", Text = "Media Gallery", ParentId = "parent3" },
new CustomMenuItem{ Id = "parent11", Text = "Newsletters", ParentId = "parent3" },
new CustomMenuItem{ Id = "parent12", Text = "Our Policy", ParentId = "parent4" },
new CustomMenuItem{ Id = "parent13", Text = "Site Map", ParentId = "parent4" },
new CustomMenuItem{ Id = "parent14", Text = "Pop", ParentId = "parent7" },
new CustomMenuItem{ Id = "parent15", Text = "Folk", ParentId = "parent7" },
new CustomMenuItem{ Id = "parent16", Text = "Classical", ParentId = "parent7" }
};
public class CustomMenuItem
{
public string Id { get; set; }
public string Text { get; set; }
public string ParentId { get; set; }
}
private void SelectItem(MenuEventArgs<CustomMenuItem> obj)
{
var x = obj.Item;
}
}
Or is there another/better way to get the selected item.
best regards
Hans-Peter
|
<li class="right-header list">
<div class="horizontal-menu">
<SfMenu Items="@MenuItems">
<MenuFieldSettings ItemId="Id" Text="Text" ParentId="ParentId"></MenuFieldSettings>
<MenuEvents ItemSelected="SelectItem" TValue="MenuItemModel"></MenuEvents>
</SfMenu>
</div>
</li>
@code {
public List<CustomMenuItem> MenuItems = new List<CustomMenuItem>
{
new CustomMenuItem{ Id = "parent1", Text = "Events" },
new CustomMenuItem{ Id = "parent2", Text = "Movies" },
new CustomMenuItem{ Id = "parent3", Text = "Directory" },
new CustomMenuItem{ Id = "parent4", Text = "Queries", ParentId = "null" },
new CustomMenuItem{ Id = "parent5", Text = "Services", ParentId = "null" },
new CustomMenuItem{ Id = "parent6", Text = "Conferences", ParentId = "parent1" },
new CustomMenuItem{ Id = "parent7", Text = "Music", ParentId = "parent1" },
new CustomMenuItem{ Id = "parent8", Text = "Workshops", ParentId = "parent1" },
new CustomMenuItem{ Id = "parent9", Text = "Now Showing", ParentId = "parent2" },
new CustomMenuItem{ Id = "parent10", Text = "Coming Soon", ParentId = "parent2" },
new CustomMenuItem{ Id = "parent10", Text = "Media Gallery", ParentId = "parent3" },
new CustomMenuItem{ Id = "parent11", Text = "Newsletters", ParentId = "parent3" },
new CustomMenuItem{ Id = "parent12", Text = "Our Policy", ParentId = "parent4" },
new CustomMenuItem{ Id = "parent13", Text = "Site Map", ParentId = "parent4" },
new CustomMenuItem{ Id = "parent14", Text = "Pop", ParentId = "parent7" },
new CustomMenuItem{ Id = "parent15", Text = "Folk", ParentId = "parent7" },
new CustomMenuItem{ Id = "parent16", Text = "Classical", ParentId = "parent7" }
};
public class CustomMenuItem
{
public string Id { get; set; }
public string Text { get; set; }
public string ParentId { get; set; }
}
private void SelectItem(MenuEventArgs<MenuItemModel> obj)
{
var x = obj.Item;
}
} |