Verhinderung der Blazor-Pfeiltaste im Kombinationsfeld

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Verhinderung der Blazor-Pfeiltaste im Kombinationsfeld

by Guest » 16 Jan 2025, 06:55

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

Top