LookUpEdit.AutoSuggest Event
Fires only when the SearchMode property equals AutoSuggest. In this mode, the editor runs the asynchronous Task assigned in the event handler to retrieve a list of drop-down panel items. See the LookUpEdit class description for more information.
Namespace: DevExpress.XtraEditors
Assembly: DevExpress.XtraEditors.v24.2.dll
NuGet Package: DevExpress.Win.Navigation
#Declaration
#Event Data
The AutoSuggest event's data class is LookUpEditAutoSuggestEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
Cancel |
Cancels the Task assigned to the Query |
Cancellation |
An object that cancels the Task assigned to the Get |
Clear |
Clears the editor drop-down menu, removing all items returned by the Get |
Editor |
Inherited from Look |
Query |
Gets or sets a System. |
Text |
Returns the current user text.
Inherited from Look |
The event data class exposes the following methods:
Method | Description |
---|---|
Clear |
Removes any active highlight pattern from lookup items.
Inherited from Look |
Get |
This member supports internal infrastucture and is not intended to be used in code.
Inherited from Look |
Highlight |
Highlights any part of a record that matches the text entered by a user.
Inherited from Look |
Highlight |
Highlights any part of a record that matches the given text.
Inherited from Look |
Highlight |
Highlights any part of a record that belongs to the specific data field and matches the given text.
Inherited from Look |
Highlight |
Highlights any part of a record that belongs to certain data fields and matches the given text.
Inherited from Look |
Highlight |
In every data field value, selects the first found text portion that matches the user text.
Inherited from Look |
Highlight |
In every data field value, selects the first found text sequence if it matches the user text.
Inherited from Look |
Highlight |
Selects the first found text sequence if it matches the user text and belongs to the specific data field.
Inherited from Look |
Highlight |
Selects the first found text portion that matches the user text and belongs to any of the given data fields.
Inherited from Look |
Highlight |
If a record starts with the user text, this text portion is highlighted.
Inherited from Look |
Highlight |
If a record starts with the given text, this text portion is higlighted.
Inherited from Look |
Highlight |
If a record belongs to the given data field and starts with the specific text, this text portion is highlighted.
Inherited from Look |
Highlight |
If record belongs to any of the given data fields and starts with the specific text, this text portion is higlighted.
Inherited from Look |
Set |
Sets a specific highlight range.
Inherited from Look |
Set |
Sets a specific highlight range.
Inherited from Look |
Set |
Sets specific highlight ranges.
Inherited from Look |
Set |
Sets the minimum duration for the loading indicator that plays while the Get |
Set |
Sets the minimum duration for the loading indicator that plays while the Get |
Set |
Sets a Task that defines the items the Look |
#Remarks
In AutoSuggest mode, the Lookup editor fires the AutoSuggest
event whenever a user enters text within it and dynamically changes the editor’s data source.
The AutoSuggest
event fires if the RepositoryItemLookUpEditBase.TextEditStyle property is set to Standard
.
The code below illustrates how to assign a Task that returns a suggestions collection, and implement a custom text highlight logic. See the LookUpEdit class description for more information.
lookUpEdit1.AutoSuggest += OnAutoSuggest;
void OnAutoSuggest(object sender, LookUpEditAutoSuggestEventArgs e) {
// Set delay (if needed)
e.SetMinimumAnimationDuration(TimeSpan.FromMilliseconds(1000));
// Assign a Task that returns suggestions
e.QuerySuggestions = WorldCities.QueryAsync(e.Text, e.CancellationToken);
// Set Custom Highlight Strategy
e.SetHighlightRanges(HighlightTags(e.Text));
}
static Func<string, string, DisplayTextHighlightRange[]> HighlightTags(string pattern) {
var indexOf = IgnoreCaseComparisonFunctions.GetIndexOf(
CultureInfo.CurrentCulture.CompareInfo, CompareOptions.IgnoreCase);
var parts = pattern.Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
return (displayText, fieldName) => {
var tags = displayText.Split(new string[] { ", " },
StringSplitOptions.RemoveEmptyEntries);
var ranges = new List<DisplayTextHighlightRange>();
for(int i = 1/*skip country tag*/; i < tags.Length; i++) {
int tagStart = displayText.IndexOf(tags[i]);
for(int j = 0; j < parts.Length; j++) {
int index = indexOf(tags[i], parts[j]);
if(index != -1)
ranges.Add(new DisplayTextHighlightRange(tagStart + index, parts[j].Length));
}
}
return ranges.ToArray();
};
}