use*_*546 6 c# blazor blazor-webassembly
我需要知道所选项目的 ID 和值。如下例所示。所以选项应该有一系列选定的部分。
<MudGrid>
<MudItem xs="6" sm="6" md="4">
@* <MudSelect T="string" Label="Parts" Strict="true" MultiSelection="true" Variant="Variant.Outlined" @bind-Value="value" @bind-SelectedValues="options" Margin="Margin.Dense" Required="true" Format="F2">*@
<MudSelect T="string" Label="Parts " HelperText="Pick the Parts" MultiSelection="true" @bind-SelectedValues="options">
@foreach (var part in parts)
{
<MudSelectItem T="string" Value=@part.PartValue>@part.PartValue</MudSelectItem>
}
</MudSelect>
</MudItem>
</MudGrid>
@code {
IEnumerable<Parts> parts = new List<Parts>()
{
new Parts() {PartID = 1, PartValue = "Audi"},
new Parts() {PartID = 2, PartValue = "BMW"},
new Parts() {PartID = 3, PartValue = "Chevrolet"},
new Parts() {PartID = 4, PartValue = "Ferrari"},
new Parts() {PartID = 5, PartValue = "Porsche"},
new Parts() {PartID = 6, PartValue = "Renault"}
};
private int value { get; set; } = 0;
private HashSet<int> options { get; set; } = new HashSet<int>() { 0 };
public class Parts
{
public int PartID { get; set; }
public string PartValue { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,您可以只使用 MudSelect 中的零件,但必须在零件中提供合适的覆盖以允许相等比较。这是经过更改的代码片段。您可以在线玩它:https ://try.mudblazor.com/snippet/wEwFFQPUdcDWgbYs
代码:
<MudGrid>
<MudItem xs="12">
<MudSelect Label="Parts " HelperText="Pick the Parts" MultiSelection="true" @bind-SelectedValues="options">
@foreach (var part in parts)
{
<MudSelectItem Value="@part">@part.PartValue</MudSelectItem>
}
</MudSelect>
</MudItem>
<MudItem xs="12">
<br/><br/>
Selected parts: @string.Join(", ", options.Select(x=>x.PartValue));
</MudItem>
</MudGrid>
@code {
IEnumerable<Parts> parts = new List<Parts>()
{
new Parts() {PartID = 1, PartValue = "Audi"},
new Parts() {PartID = 2, PartValue = "BMW"},
new Parts() {PartID = 3, PartValue = "Chevrolet"},
new Parts() {PartID = 4, PartValue = "Ferrari"},
new Parts() {PartID = 5, PartValue = "Porsche"},
new Parts() {PartID = 6, PartValue = "Renault"}
};
private IEnumerable<Parts> options { get; set; } = new HashSet<Parts>() {
new Parts() {PartID = 2, PartValue = "BMW"},
new Parts() {PartID = 4, PartValue = "Ferrari"},
};
public class Parts
{
public int PartID { get; set; }
public string PartValue { get; set; }
public override bool Equals(object o) {
var other = o as Parts;
return other?.PartID==PartID;
}
public override int GetHashCode() => PartID.GetHashCode();
public override string ToString() {
return PartValue;
}
}
}
Run Code Online (Sandbox Code Playgroud)