Search in MAUI DataGrid (SfDataGrid)
The SfDataGrid control allows you to search the data displayed within it. You can search the data using the SearchController.Search method.
this.dataGrid.SearchController.Search(entry.Text);
Filtering
The filtering can be enabled for the search results by setting the SearchController.AllowFiltering property to true.
this.dataGrid.SearchController.AllowFiltering = true;
this.dataGrid.SearchController.Search(entry.Text);
You can search the data with the case-sensitivity by setting SearchController.AllowCaseSensitiveSearch property.
this.dataGrid.SearchController.AllowCaseSensitiveSearch = true;
Search with pattern matching
You can customize the type of search for the SearchController
by using the SearchType property. The available search types are: StartsWith
, Contains
and EndsWith
. The below code snippet demonstrates how to set the search type as StartsWith
.
this.datagrid.SearchController.SearchType = DataGridSearchType.StartsWith;
Customize the appearance of highlight text
You can apply the style for a searched text color, background color and search highlighted text color, background color by using SearchTextColor, SearchTextBackground, SearchHighlightTextColor, SearchHighlightTextBackground in SfDataGrid.DefaultStyle
.
<ContentPage.Content>
<syncfusion:SfDataGrid ItemsSource="{Binding OrderInfoCollection}">
<syncfusion:SfDataGrid.DefaultStyle>
<syncfusion:DataGridStyle SearchTextColor="Black"
SearchTextBackground="LightBlue"
SearchHighlightTextColor="Black"
SearchHighlightTextBackground="LightGreen" />
</syncfusion:SfDataGrid.DefaultStyle>
</syncfusion:SfDataGrid>
</ContentPage.Content>
Navigating cells based on search text
The SfDataGrid allows navigation between the search results programmatically using the SearchController.FindNext and SearchController.FindPrevious methods.
this.dataGrid.SearchController.FindNext("SearchText");
this.dataGrid.SearchController.FindPrevious("SearchText");
Clear Search
The search can be cleared by using the SearchController.ClearSearch method.
this.dataGrid.SearchController.ClearSearch();
Search customization
The SfDataGrid
processes search operations in the DataGridSearchController class. You can change the default search behaviors by creating a custom class that overrides the DataGridSearchController
class and setting it to the SfDataGrid.SearchController
property.
this.datagrid.SearchController = new CustomDataGridSearchController (this.datagrid);
public class CustomDataGridSearchController : DataGridSearchController
{
public CustomDataGridSearchController(SfDataGrid datagrid)
: base(datagrid)
{
}
}
Search only a specific column
You can search only a specific column by overriding the SearchCell method of the DataGridSearchController
. In the SearchCell
method, you can perform a search for the column you want to apply based on the MappingName
.
In the code below, all columns except the CustomerID
column are excluded from the search.
public class CustomDataGridSearchController : DataGridSearchController
{
public CustomDataGridSearchController(SfDataGrid datagrid)
: base(datagrid)
{
}
protected override bool SearchCell(DataColumnBase column, object record, bool ApplySearchHighlightBrush)
{
if (column.DataGridColumn.MappingName == "CustomerID")
return base.SearchCell(column, record, ApplySearchHighlightBrush);
return false;
}
}
Obtain the search records
You can get the records by using the GetSearchRecords method of the DataGridSearchController
. This method returns a list of search records. The below code snippet demonstrates how to get the search records.
var records = this.datagrid.SearchController.GetSearchRecords();