I am creating MudTab with MudTable .The columns and data are passed dynamically to the MudTab and MudTable. But I cannot figure it out how to set<MudTh><MudTableSortLabel SortBy</MudTableSortLabel></MudTh>
Tab.razor<MudTabs @bind-ActivePanelIndex="_index"><ChildContent> @foreach (var tab in tabs) {<MudTabPanel Text="@tab.Text"><MudTable Items="@tab.TableData" Hover="true"> <HeaderContent> @foreach (var column in tab.ColumnNames) {<MudTh> @column </MudTh> }</HeaderContent> <RowTemplate> @foreach (var column in tab.ColumnNames) {<MudTd DataLabel="@column">@context.GetDisplayValue(column)</MudTd> }</RowTemplate></MudTable></MudTabPanel> }</ChildContent></MudTabs> Tab.razor.cs public partial class Tab { public interface ITableData { string GetDisplayValue(string propertyName); object GetSortValue(string propertyName); } public class TabModel { public int Index { get; set; } public string Text { get; set; } = string.Empty; public List<string> ColumnNames { get; set; } = new(); public List<ITableData> TableData { get; set; } = new(); } public class All : ITableData { public string Field1 { get; set; } = string.Empty; public string Field2 { get; set; } = string.Empty; public string GetDisplayValue(string propertyName) { return propertyName switch {"Field1" => Field1 ,"Field2" => Field2 }; } public object GetSortValue(string propertyName) { return propertyName switch {"Field1" => Field1,"Field2" => Field2, _ => string.Empty, }; } } public class Net : ITableData { public string NetField1 { get; set; } = string.Empty; public string NetField2 { get; set; } = string.Empty; public string GetDisplayValue(string propertyName) { return propertyName switch {"NetField1" => NetField1 ,"NetField2" => NetField2 , _ => string.Empty, }; } public object GetSortValue(string propertyName) { return propertyName switch {"NetField1" => NetField1 ,"NetField2" => NetField2 , _ => string.Empty }; } } private int _index = 0; private int? _nextIndex = null; private int selectedIndex = 0; private List<TabModel> tabs = new(); protected override void OnInitialized() { base.OnInitialized(); tabs = new List<TabModel> { new TabModel { Index = 0, Text = "All", ColumnNames = new List<string> { "Field1", "Field1"}, TableData = new List<ITableData> { new All { Field1 = "Name1",Field2 ="125KB" }, new All { Field1 = "Name2", Field2 ="125KB" } } }, new TabModel { Index = 1, Text = "Net", ColumnNames = new List<string> { "NetField1", "NetField2"}, TableData = new List<ITableData> { new Net { NetField1 = "25%" , NetField2 = "Process1" }, new Net { NetField1 = "35%" , NetField2 = "Process2" } } }; } }I tried the following options
<MudTableSortLabel SortBy="((object)(column))">@column</MudTableSortLabel><MudTableSortLabel SortBy="@(context => context.GetSortValue(column))"><MudTableSortLabel SortBy="@(x => x.GetSortValue(column))"> @column</MudTableSortLabel>And tried other options too. but nothing worked out. Getting error asking to enter the T explicitly
for Funct<T,object>How do I add the Class name