如果在创建新行后选择行,我已经解决了问题。它也会滚动到它。
这一次,我遇到的问题是不同的。 它应滚动到所选行,但所选行有子行,它应向下滚动到所选行的最后一个子行。
我已经知道如何获取所选行,但不知道如何获取它的索引。
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);
}
}
答案 0 :(得分:1)
您需要找到活动行的最低子项并强制网格将该行滚动到视图中。根据您使用的Infragistics控件的版本,UltraGridRow.HasChild()
和UltraGridRow.GetChild()
的某些组合将帮助您遍历子项以标识所选行的最后一个子行。然后UltraGridView.ActiveScrollRegion.ScrollRowIntoView()
应强制进行所需的滚动。
实施留给读者的练习:)
某些方法名称在Infragistics控件套件的各个版本中都已更改,但这些或类似的方法仍应存在。