47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
@typeparam TModel
|
|
@typeparam TId
|
|
|
|
<MudSelect @bind-Value="Model" Label="@Label" Variant="Variant">
|
|
@foreach (var item in models)
|
|
{
|
|
<MudSelectItem T="TModel" Value="item">@GetName(item)</MudSelectItem>
|
|
}
|
|
</MudSelect>
|
|
|
|
@code {
|
|
[Parameter] public Variant Variant { get; set; }
|
|
|
|
[Parameter] public string Label { get; set; }
|
|
|
|
[Parameter] public Func<TModel, string> GetName { get; set; }
|
|
|
|
|
|
[Parameter] public Func<Task<List<TModel>>> GetDataFunc { get; set; }
|
|
|
|
IEnumerable<TModel> models = Enumerable.Empty<TModel>();
|
|
|
|
[Parameter] public TId Value { get; set; }
|
|
|
|
[Parameter] public EventCallback<TId> ValueChanged { get; set; }
|
|
|
|
|
|
private TModel model;
|
|
TModel Model
|
|
{
|
|
get
|
|
{
|
|
return model;
|
|
}
|
|
set
|
|
{
|
|
model = value;
|
|
Value = (TId)(typeof(TModel).GetProperty("Id").GetValue(model));
|
|
InvokeAsync(async () => await ValueChanged.InvokeAsync(Value));
|
|
}
|
|
}
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
models = await GetDataFunc();
|
|
}
|
|
} |