Установить ультрасеточный ряд, выбранный после создания нового ряда для другой группы? - PullRequest
0 голосов
/ 12 сентября 2011

Я уже решил проблему при выборе строки после создания новой строки. И это также прокручивается вниз к нему.

На этот раз у меня другая проблема. Следует прокрутить до выбранной строки, но в выбранной строке есть подстроки, а затем прокрутить вниз до последней подстроки выбранной строки.

Я уже знаю, как получить выбранную строку, но не знаю, как получить ее индекс.

private void SplitUnit(Boolean editSplittedRow)
        {
            UC011_WizardStepUnitDataSet.UnitRow unitRow;

            if (editSplittedRow)
            {
                unitRow = (ultraGridOverview.ActiveRow.ParentRow.ListObject as DataRowView).Row as UC011_WizardStepUnitDataSet.UnitRow;
            }
            else
            {
                unitRow = (ultraGridOverview.ActiveRow.ListObject as DataRowView).Row as UC011_WizardStepUnitDataSet.UnitRow;
            }

            DialogResult dr = new DialogResult();
            FormSplitUnit form = new FormSplitUnit();

            form.ParentRow = unitRow;
            form.UnitDataSet = _uc011_WizardStepUnitDataSet;

            dr = form.ShowDialog();

            if (dr == DialogResult.Yes)
            {
                // Get splitted units from form
                UC011_WizardStepUnitDataSet dataSet = form.GetDataSet();

                // Obsolete ?
                //_uc011_WizardStepUnitDataSet.Unit.Merge(dataSet.Unit, true, MissingSchemaAction.Ignore);

                // Update modified or add new units
                UpdateSplittedUnitList(dataSet);

                // Reset data to grid
                //SetUltraGridData();

                // Update summary data
                SetSummaryDataSet();
                ultraGridOverview.Rows[unitRow].Selected = true;
                ultraGridOverview.Rows[_uc011_WizardStepUnitDataSet.Unit.Count - 1].Activate();
                ultraGridOverview.PerformAction(UltraGridAction.LastRowInGrid);

            }
        }

1 Ответ

1 голос
/ 12 сентября 2011

Вам нужно найти самого нижнего потомка вашей активной строки и заставить сетку прокрутить эту строку в поле зрения.В зависимости от версии используемых элементов управления Infragistics, некоторая комбинация UltraGridRow.HasChild() и UltraGridRow.GetChild() поможет вам перебрать дочерние элементы для определения последней подстроки выбранной строки.Тогда UltraGridView.ActiveScrollRegion.ScrollRowIntoView() должен вызвать желаемую прокрутку.

Реализация оставлена ​​в качестве упражнения для читателя :)

Некоторые имена методов изменились в разных версиях набора элементов управления Infragistics, но эти или аналогичные методы все еще должны существовать.

...