#c# #blazor #blazor-webassembly
#c# #blazor #blazor-webassembly
Вопрос:
Я пытаюсь создать динамический список полей ввода, в то время как я выбираю элементы из выпадающего списка с несколькими вариантами выбора. итак, как динамически привязать переменную к созданным текстовым полям, привязанным к идентификатору, выбранному из выпадающего списка с несколькими вариантами выбора.
это то, что я сделал .
<MudGrid>
<MudItem xs="12" md="12">
<MudSelect T="Parts" Label="US States" HelperText="Pick your favorite states" MultiSelection="true" @bind-Value="value" @bind-SelectedValues="options">
@foreach (var part in parts)
{
<MudSelectItem T="Parts" Value="@part">@part.PartsValue</MudSelectItem>
}
</MudSelect>
</MudItem>
@foreach (Parts item in options)
{
int i = 0;
<MudItem xs="3" sm="3" md="2">
<MudTextField @bind-Value="@xxxxx" Label="@item.PartsValue" Variant="Variant.Outlined" Margin="Margin.Dense"></MudTextField>
</MudItem>
i ;
}
</MudGrid>
Комментарии:
1. Мне нравится, как вы создаете
int i=0
каждый раз, когда запускаете новый цикл, увеличиваете его в конце цикла, а затем выбрасываете. 😉 Но в любом случае: в чем вопрос?
Ответ №1:
Я заставил ваш код работать и создал скрипку, которая позволяет выполнять его онлайн: https://try.mudblazor.com/snippet/wYwFvcPUxSdgXHbW
<MudGrid>
<MudItem xs="12" md="12">
<MudSelect T="Part" MultiSelection="true" @bind-SelectedValues="options">
@foreach (var part in parts)
{
<MudSelectItem T="Part" Value="@part">@part.PartValue</MudSelectItem>
}
</MudSelect>
</MudItem>
@foreach (var part in options)
{
<MudItem xs="3" sm="3" md="2">
<MudTextField @bind-Value="@part.PartValue" Label="Edit part" Variant="Variant.Outlined" Margin="Margin.Dense"></MudTextField>
</MudItem>
}
</MudGrid>
@code
{
IEnumerable<Part> parts = new List<Part>()
{
new Part() {PartID = 1, PartValue = "Part 1"},
new Part() {PartID = 2, PartValue = "Part 2"},
new Part() {PartID = 3, PartValue = "Part 3"},
};
private IEnumerable<Part> options { get; set; } = new HashSet<Part>() {
new Part() {PartID = 3, PartValue = "Part 3"},
};
public class Part
{
public int PartID { get; set; }
public string PartValue { get; set; }
public override bool Equals(object o) {
var other = o as Part;
return other?.PartID==PartID;
}
public override int GetHashCode() => PartID.GetHashCode();
public override string ToString() {
return PartValue;
}
}
}