Принудительно ввести значение ввода (Поиск по мере ввода) в списке? - PullRequest
1 голос
/ 10 февраля 2020

(Asp. net ядро ​​3.1, сервер Blazor)

Я строю раскрывающийся ввод с предложениями, загружаемыми динамически по значению ввода в поле ввода. Как заставить значение <input> в списке suggestions? (например, <select>)

<datalist id="suggestions">
    @foreach (var b in filteredList)
    {
        <option value="@b.Value">@b.Text</option>
    }
</datalist>
<input autoComplete="on" list="suggestions" value="@theValueEntered"
               @oninput="OnInputChanged"
               @onfocus='() => OnInputChanged(new ChangeEventArgs { Value = "" })'/>

@code {
    private CancellationTokenSource cancellationTokenSource;
    private string theValueEntered;
    private IEnumerable<Data> filteredList;

    private Task OnInputChanged(ChangeEventArgs e)
    {
        theValueEntered = e.Value as string;
        cancellationTokenSource?.Cancel();
        cancellationTokenSource?.Dispose();
        cancellationTokenSource = new CancellationTokenSource();
        var token = _cancellationTokenSource.Token;

        awaitTask.Delay(250, token);
        filteredList = await dbContext.Data // Millions rows
                            .Where(x => x.Name.StartWith(theValueEntered)
                            .Take(25)
                            .ToListAsync();
    }
}

1 Ответ

0 голосов
/ 10 февраля 2020

Просто добавьте его в отфильтрованный список

filteredList.Add(theValueEntered);

или добавьте в начало

filteredList.Insert(0, theValueEntered);
...