Currently, as far as the GridDataBoundGrid goes, the child lis does not exist until the parent node is expanded. So, from the GridDataBoundGrid point of view you cannot get at the child list if it is closed.
So, since you need access whether or not the parent row is expanded, then you will have to use the relation to access the child list. Here is some code that you could try:
//dSet is the DataSet being used...
private void ListChildrenOfGridRow(int gridRowIndex)
{
GridBoundRecordState rs = this.gridDataBoundGrid1.Binder.GetRecordStateAtRowIndex(gridRowIndex);
if(rs.LevelIndex >= dSet.Relations.Count)
{
Console.WriteLine("--none");
}
else
{
DataRelation relation1 = dSet.Relations[rs.LevelIndex];
string childColName = relation1.ChildColumns[0].ColumnName;
string parentColName = relation1.ParentColumns[0].ColumnName;
int parentPos = rs.Position;
string parentValue = ((DataRowView)rs.Table[parentPos]).Row[parentColName].ToString();
string filter = string.Format("[{0}] = '{1}'", childColName, parentValue);
DataView dv = new DataView(relation1.ChildTable, filter, "", DataViewRowState.CurrentRows);
foreach(DataRowView drv in dv)
{
DataRow dr = drv.Row;
Console.WriteLine("{0}, {1}, {2}", dr[0], dr[1], dr[2]);
}
dv.Dispose();
}
}