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