Задать строку ультрасетки, выбранную после создания новой строки - PullRequest
1 голос
/ 12 сентября 2011

У меня есть ультрасетка с большим количеством строк, новые строки добавляются в конец, я хочу, чтобы при добавлении новой строки эта строка была выбрана, и сетка также должна прокручиваться до дна.

Я собирался попробовать ActiveRow, но он говорит, что у него нет установщика

private void ultraButtonCreateNew_Click(object sender, EventArgs e)
        {
            DialogResult dr = new DialogResult();
            FormAddUnit form = new FormAddUnit();

            form.BuildingDataSet = _buildingDataSet;
            form.SectionDataSet = _sectionDataSet;
            form.UnitDataSet = _uc011_WizardStepUnitDataSet;
            form.SummaryDataSet = _summaryDataSet;
            form.FormState = WizardState.Create;
            form.Enablement = false;

            dr = form.ShowDialog();

            if (dr == DialogResult.Yes)
            {
                UC011_WizardStepUnitDataSet.UnitRow row = form.GetRow();
                _uc011_WizardStepUnitDataSet.Unit.AddUnitRow(row);
                SetUltraGridData();
                ultraGridOverview.DisplayLayout.ActiveRow = row;
                SetSummaryDataSet();
            }
        }

Ответы [ 2 ]

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

Чтобы выбрать строку и прокрутить ее в представление, вы можете вызвать метод Activate для строки, подобной этой

ultraGridOverview.Rows[ultraGridOverview.Rows.Count - 1].Activate() 

или вы можете установить свойство Position базового CurrencyManager

CurrencyManager currencymanagerCustomers;
currencymanagerCustomers = this.BindingContext(ultraGridOverview.DataSource);
currencymanagerCustomers.Position = _uc011_WizardStepUnitDataSet.Rows.Count -1;
0 голосов
/ 08 марта 2012
private void ultraGrid1_BeforeRowDeactivate(object sender, CancelEventArgs e)
{
    if (!first) //Ignore this step if application has just started
    {
       UltraGrid g = (UltraGrid)(sender);
       r = g.ActiveRow;
       ultraGrid1.Rows[g.ActiveRow.Index].Cells["Is Closed"].Value = false; 
    }
}

Это сработало для меня в нескольких диапазонах.

r - это глобальная переменная, в которой хранится ссылка на вновь созданную строку.first - глобальный bool, который становится ложным в конце Form_Load.

После того, как строка вставлена ​​/ создана, используйте ссылку на r, чтобы изменить строку

...