1

説明

Blazor wasm アプリケーションを作成しました。そこでInputSelect<string>、ID の文字列を取得する独自のコンポーネントを作成しました (例: "1,2,3,4,5")。ID を解析してそれらを表示し、返してから文字列に変換し直すことができます。selectedServergroups複数選択メニューが変更された場合、変数を新しい値で更新したいと思います。しかし、リストで最初に選択された値を取得しました。選択したすべての値を取得するにはどうすればよいですか?

ソース

@using PhoenixBot.Shared.Instances.Shared
@using PhoenixBot.Client.Helper
@inherits InputSelect<string>

<select class="@CssClass multi-select" @onchange="OnChange" multiple>
    @if (Servergroups != null)
    {
        @foreach (var group in Servergroups)
        {
            <option value="@Convert.ToInt32(group.Id)" selected="@selectedServergroups.Contains(Convert.ToInt32(group.Id))">@group.Name</option>
        }
    }
</select>

@code {
    [Parameter]
    public List<Servergroup> Servergroups { get; set; }

    private List<int> selectedServergroups { get; set; }

    protected override void OnInitialized()
    {
        base.OnInitialized();

        selectedServergroups = GroupHelper.ParseGroupOfString(CurrentValue);
    }

    private void OnChange(ChangeEventArgs e)
    {
        Serilog.Log.Error(e.Value.ToString());
    }

    protected override bool TryParseValueFromString(string value, out string result, out string validationErrorMessage)
    {
        result = GroupHelper.ConvertGroupOfList(selectedServergroups);
        validationErrorMessage = null;
        return true;
    }
}

OnChange ログ出力の例

2020-07-09 08:43:38 [ERR] 75
2020-07-09 08:43:40 [ERR] 74
2020-07-09 08:43:41 [ERR] 73
2020-07-09 08:43:43 [ERR] 73
2020-07-09 08:43:45 [ERR] 73
4

0 に答える 0