Files
NewMudForms.RCL/Components/NewMudSelect.razor
T
2026-08-07 02:17:23 +03:00

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();
}
}