Back to Devexpress

DataViewBase.SearchStringToFilterCriteria Event

wpf-devexpress-dot-xpf-dot-grid-dot-dataviewbase-74a7a2f7.md

latest8.1 KB
Original Source

DataViewBase.SearchStringToFilterCriteria Event

Occurs each time the GridControl starts to search data and allows you to convert the search string to filter criteria.

Namespace : DevExpress.Xpf.Grid

Assembly : DevExpress.Xpf.Grid.v25.2.Core.dll

NuGet Package : DevExpress.Wpf.Grid.Core

Declaration

csharp
public event SearchStringToFilterCriteriaEventHandler SearchStringToFilterCriteria
vb
Public Event SearchStringToFilterCriteria As SearchStringToFilterCriteriaEventHandler

Event Data

The SearchStringToFilterCriteria event's data class is SearchStringToFilterCriteriaEventArgs. The following properties provide information specific to this event:

PropertyDescription
ApplyToColumnsFilterGets or sets whether the column’s filter popup detects changes in the search panel.
FilterGets or sets the filter that is applied to the GridControl.
HighlightingGets or sets highlighting strings for fields.
SearchStringGets the search string entered in the Search Panel.
SourceGets the GridControl.

Remarks

The following code sample shows how to make the Search Panel search for a string that contains a space character without the need to specify this string in quotation marks:

xaml
<dxg:GridControl.View>
    <dxg:TableView
        SearchStringToFilterCriteria="TableView_SearchStringToFilterCriteria"
        SearchString="Alex Mercer"
        SearchPanelAllowFilter="False"/>
</dxg:GridControl.View>
csharp
void TableView_SearchStringToFilterCriteria(object sender, SearchStringToFilterCriteriaEventArgs e) {
    e.Filter = CriteriaOperator.Parse(string.Format("Contains([Name], '{0}')", e.SearchString));
}
vb
Private Sub TableView_SearchStringToFilterCriteria(ByVal sender As Object, ByVal e As SearchStringToFilterCriteriaEventArgs)
    e.Filter = CriteriaOperator.Parse(String.Format("Contains([Name], '{0}')", e.SearchString))
End Sub

Note

If you handle the SearchStringToFilterCriteria event and do not specify the SearchStringToFilterCriteriaEventArgs.Filter property, the GridControl does not search items.

When you assign complex filter criteria to the e.Filter property, the GridControl may not highlight search results. In this case, specify the e.Highlighting property:

csharp
private void TableView_SearchStringToFilterCriteria(object sender, DevExpress.Xpf.Grid.SearchStringToFilterCriteriaEventArgs e) {
    e.Filter = CriteriaOperator.Parse(string.Format("Contains([Name], '{0}') OR Contains([Id], '{0}')", e.SearchString));
    e.Highlighting = new List<FieldAndHighlightingString>((sender as TableView).VisibleColumns.Select(c => new FieldAndHighlightingString(c.FieldName, e.SearchString)));
}
vb
Private Sub TableView_SearchStringToFilterCriteria(ByVal sender As Object, ByVal e As DevExpress.Xpf.Grid.SearchStringToFilterCriteriaEventArgs)
    e.Filter = CriteriaOperator.Parse(String.Format("Contains([Name], '{0}') OR Contains([Id], '{0}')", e.SearchString))
    e.Highlighting = New List(Of FieldAndHighlightingString)((TryCast(sender, TableView)).VisibleColumns.[Select](Function(c) New FieldAndHighlightingString(c.FieldName, e.SearchString)))
End Sub

To highlight multiple values in the same column, assign these values (divided by the new line symbol (\n)) to the e.Highlighting property:

csharp
e.Highlighting = new List<FieldAndHighlightingString>((sender as TableView).VisibleColumns.Select(
    c => new FieldAndHighlightingString(c.FieldName, e.SearchString.Replace(" ", "\n"))
));
vb
e.Highlighting = New List(Of FieldAndHighlightingString)((TryCast(sender, TableView)).VisibleColumns.[Select](Function(c) New FieldAndHighlightingString(c.FieldName, e.SearchString.Replace(" ", "\n"))))

Refer to the following help topic for more information: Search.

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the SearchStringToFilterCriteria event.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

wpf-data-grid-bind-to-custom-service-with-restrictions/CS/MainWindow.xaml#L39

xml
<dxg:TableView CompactPanelShowMode="Always" CompactSortElementShowMode="Always"
                   ShowSearchPanelMode="Always" SearchStringToFilterCriteria="OnSearchStringToFilterCriteria" />
</dxg:GridControl.View>

wpf-data-grid-bind-to-custom-service-with-restrictions/CS/obj/Debug/net8.0-windows/MainWindow.g.cs#L138

csharp
#line 39 "..\..\..\MainWindow.xaml"
((DevExpress.Xpf.Grid.TableView)(target)).SearchStringToFilterCriteria += new DevExpress.Xpf.Grid.SearchStringToFilterCriteriaEventHandler(this.OnSearchStringToFilterCriteria);

wpf-data-grid-bind-to-custom-service-with-restrictions/VB/obj.NetFX/Debug/MainWindow.g.vb#L137

vb
#ExternalSource("..\..\MainWindow.xaml",39)
AddHandler CType(target,DevExpress.Xpf.Grid.TableView).SearchStringToFilterCriteria, New DevExpress.Xpf.Grid.SearchStringToFilterCriteriaEventHandler(AddressOf Me.OnSearchStringToFilterCriteria)

See Also

Virtual Sources - Enable Search Panel

DataViewBase Class

DataViewBase Members

DevExpress.Xpf.Grid Namespace