Пример #1
0
        /// <summary>
        /// Возвращает таблицу вложенных элементов для таблицы, при этом раскрывая её и проматывая до её начала
        /// </summary>
        /// <param name="grid">Таблица, таблицу вложенных элементов которой нужно получить</param>
        /// <param name="relationalColumn">Название столбца с подробностями</param>
        /// <param name="recordIndex">Позиция записи в таблице</param>
        /// <param name="detailsColumn">Номер столбца в таблице вложенных элементов</param>
        public static SfDataGrid GetDetailsViewGridWUpd(this SfDataGrid grid, string relationalColumn, int recordIndex, int detailsColumn = 1)
        {
            int         rowIndex = grid.ResolveToRowIndex(recordIndex);
            RecordEntry record   = grid.View.Records[recordIndex];

            if (!record.IsExpanded)
            {
                grid.ExpandDetailsViewAt(recordIndex);
            }

            int vIndex = grid.DetailsViewDefinition.FindWithIndex(it => it.RelationalColumn == relationalColumn).index + rowIndex + 1;

            grid.ScrollInView(new RowColumnIndex(vIndex, detailsColumn));

            SfDataGrid view = grid.GetDetailsViewGrid(recordIndex, relationalColumn);

            if (view != null)
            {
                return(view);
            }

            grid.GetViewManager().BringIntoView(vIndex);

            grid.ScrollInView(new RowColumnIndex(rowIndex, detailsColumn));

            return(grid.GetDetailsViewGrid(recordIndex, relationalColumn));
        }