在创建新行后,设置选定的超级网格行
本文关键字:网格 新行 创建 设置 | 更新日期: 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的引用来修改行