在创建新行后,设置选定的超级网格行

本文关键字:网格 新行 创建 设置 | 更新日期: 2023-09-27 18:08:15

我有一个超级网格,有很多行,新行被添加到末尾,我希望当添加新行时,该行被选中,网格也应该滚动到底部。

我本来打算试试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();
            }
        }

在创建新行后,设置选定的超级网格行

为了选择一行并将其滚动到视图中,您可以在类似的行上调用Activate方法

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

或者您可以设置基础CurrencyManager 的仓位属性

CurrencyManager currencymanagerCustomers;
currencymanagerCustomers = this.BindingContext(ultraGridOverview.DataSource);
currencymanagerCustomers.Position = _uc011_WizardStepUnitDataSet.Rows.Count -1;
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是一个全局var,它存储对新创建的行的引用。第一个是全局bool,它在Form_Load的末尾被设为false。

插入/创建行后,使用对r的引用来修改行