Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

How to use SortBy in Dynamic Mudtable

$
0
0

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


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>