2X faster development
The ultimate WPF UI toolkit to boost your development speed.
WPF DataGrid (SfDataGrid) does not have support to navigate through the error cells specifically. You can navigate to the error cells using the CurrentRowColumnIndex and GridCell.HasError properties through button click. C# private void OnFindNextClicked(object obj) { var datagrid = obj as SfDataGrid; var visualContainer = datagrid.GetVisualContainer(); var moveNextRow = true; var currentRowColumnIndex = datagrid.SelectionController.CurrentCellManager.CurrentRowColumnIndex; //if there is no selection maintained in grid, currentRowColumnIndex will be -1. In that case we need to navigate to the first error cell. if (currentRowColumnIndex.RowIndex < 0) MoveToErrorCell(datagrid, true, ref moveNextRow); var rowIndex = currentRowColumnIndex.RowIndex; var columnIndex = currentRowColumnIndex.ColumnIndex; while (moveNextRow && rowIndex >= datagrid.GetFirstDataRowIndex() && rowIndex <= datagrid.GetLastDataRowIndex()) { var gridCellCollections = GetGridCellCollection(datagrid, new RowColumnIndex(rowIndex,columnIndex)); if (gridCellCollections != null) { foreach (var gridCellItem in gridCellCollections) { var gridCell = gridCellItem as GridCell; if (gridCell != null && gridCell.HasError && (gridCell.ColumnBase.ColumnIndex > columnIndex || currentRowColumnIndex.RowIndex != rowIndex)) { datagrid.SelectionController.MoveCurrentCell(new RowColumnIndex(rowIndex, gridCell.ColumnBase.ColumnIndex)); datagrid.ScrollInView(datagrid.SelectionController. CurrentCellManager.CurrentRowColumnIndex); moveNextRow = false; return; } } } rowIndex++; if (rowIndex <= datagrid.GetLastDataRowIndex()) datagrid.SelectionController.MoveCurrentCell(new RowColumnIndex(rowIndex, datagrid.GetFirstColumnIndex())); } } /// <summary> /// To get the grid cell collection of particular row /// </summary> private UIElementCollection GetGridCellCollection(SfDataGrid datagrid, RowColumnIndex currentRowColumnIndex) { var currentRow = datagrid.RowGenerator.Items.FirstOrDefault(row => row.RowIndex == currentRowColumnIndex.RowIndex); var rowControl = currentRow.Element as VirtualizingCellsControl; var orientedCellsPanel = rowControl.Content as OrientedCellsPanel; return orientedCellsPanel.Children; } |
2X faster development
The ultimate WPF UI toolkit to boost your development speed.
This page will automatically be redirected to the sign-in page in 10 seconds.