Page 1 of 1

Verhinderung der Blazor-Pfeiltaste im Kombinationsfeld

Posted: 16 Jan 2025, 06:55
by Guest
Beim Filtern der Dropdown-Liste in der Kombination wird der eingegebene Wert durch die Dropdown-Werte ersetzt, wenn mit den Tasten „Pfeil nach oben“ und „Pfeil nach unten“ navigiert wird. Ich möchte den eingegebenen Wert beibehalten, bis der Benutzer explizit ein Element auswählt.
Wie mache ich das in Blazor?
Ich habe es wie folgt versucht, aber immer noch funktioniert nicht

Code: Select all

private string _typeValue;

public async void KeyPressed(KeyboardEventArgs args)
{
if (args.Key == "ArrowUp" || args.Key == "ArrowDown")
{
if (_comboSelector != null)
{
RestoreTypedValue();

}
else if (args.Key != "Enter")
{
_typedValue = SelectedDataItem?.TextValue ?? string.Empty;
}
}
}

private void RestoreTypedValue()
{

if (!string.IsNullOrEmpty(_typedValue))
{
SelectedDataItem.TextValue = _typedValue;
StateHasChanged();
}
}
public async Task OnFiltering(FilteringEventArgs value)
{
try
{
if (UIElement.IsCd02 == 1)
{
if (value.Text != null && value.Text.Length >= this.MinLengthTerm)
{
_typeValue=value.Text;
await this.ReadCombo(value.Text);
}
else
{
this.DataCollection = this.InitialCollection;
}
}
else
{
if (value.Text != null && value.Text.Length >= 2)
{
value.PreventDefaultAction = true;
var query = new Query().Where(new WhereFilter()
{
Field = "TextValue",
Operator = "contains",
value = value.Text,
IgnoreCase = true
});
query = !string.IsNullOrEmpty(value.Text) ? query : new Query();
_typeValue=value.Text;
await _comboSelector.FilterAsync(DataCollection, query);
}
else
{
this.DataCollection = this.InitialCollection;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}