/// <summary> /// Перемещает позицию в таблице на позицию необходимой строки и выделяет найденную строку /// </summary> /// <param name="grid">Таблица для обработки</param> /// <param name="filePredicate">Проверка на корректность файла</param> /// <param name="stringPredicate">Проверка на корректность строки</param> public static void ScrollToFileAndSelectString(this SfDataGrid grid, Predicate <IEditableFile> filePredicate, Predicate <IOneString> stringPredicate) { int parentIndex = grid.View.Records.FindWithIndex(it => filePredicate(it.Data.As <IEditableFile>())).index; if (parentIndex == -1) { return; } SfDataGrid detailsGrid = grid.GetDetailsViewGridWUpd("Details", parentIndex); VisualContainer container = grid.GetVisualContainer(); container.ScrollRows.ScrollInView(grid.ResolveToRowIndex(parentIndex)); int childIndex = detailsGrid.View.Records.FindWithIndex(it => stringPredicate(it.Data as IOneString)).index; if (childIndex == -1) { return; } detailsGrid.SelectedIndex = childIndex; for (int i = 0; i < childIndex; i++) { container.ScrollRows.ScrollToNextLine(); } }