Вы можете обработать события AfterRowActivate или AfterRowSelected первой сетки, а затем либо заполнить вторую сетку соответствующими данными.
Если у вас есть данные обо всех родительских строках во второй сетке, вы также можете настроить фильтр столбцов следующим образом:
private void ugParent_AfterRowActivate(object sender, EventArgs e)
{
if (this.ugParent.ActiveRow != null)
{
//either populate the grid with data specific to the current row:
//this.ugChilds.DataSource = this.GetChildData(this.ugParent.ActiveRow);
//or filter the grid
object key = this.ugParent.ActiveRow.Cells["IDField"].Value;
this.ugChilds.DisplayLayout.Bands[0].ColumnFilters["RelationField"].FilterConditions.Add(FilterComparisionOperator.Equals, key);
}
else
{
//clear Child grid if required. If you set datasource to null you will loose all layout and need to relayout the grid on next binding
}
}
Если вы используете ColumnFilters, не забудьте повторно использовать существующие фильтры или очистить условия фильтра перед добавлением новых условий фильтра.