您好我有一个GridDataControl,它通过关系与子网格相关。在父网格上应用了一种行为,它格式化网格并获取列标题名称。我想将这种相同的行为应用于子网格。两个网格的数据格式相同,但主子网格不可访问,只有其列通过GridDataVisibleColumn属性。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
在使用Parent网格的行为时,可以使用ParentGrid的RecordExpanded事件获取子网格,如下面的代码片段所示。
代码段:
protected override void OnAttached()
{
this.AssociatedObject.Model.Table.RecordExpanded += Parent_RecordExpanded;
base.OnAttached();
}
private void Parent_RecordExpanded(object sender, GridDataValueEventArgs<GridDataRecord> e)
{
var mainGridColumns = e.Value.Table.Model.TableProperties.VisibleColumns;
//Here header style is applied to first column in Parent grid.
mainGridColumns[0].HeaderStyle = new GridDataColumnStyle();
mainGridColumns[0].HeaderStyle.Background = Brushes.Red;
var childGridColumns = e.Value.ChildModels[0].Table.Model.TableProperties.VisibleColumns;
//Here, header style is applied to first column of nested grid.
childGridColumns[0].HeaderStyle = new GridDataColumnStyle();
childGridColumns[0].HeaderStyle.Background = Brushes.Brown;
e.Value.ChildModels[0].Table.CurrentCellValidating += Table_CurrentCellValidating;
}
void Table_CurrentCellValidating(object sender, GridDataCurrentCellValidatingEventArgs args)
{
foreach (var item in (sender as GridDataTable).Model.TableProperties.VisibleColumns)
{
if (item.MappingName == "OrderID")
{
// do action
}
}
}
您可以像上面的代码段一样从ChildModels获取子网格。 ChildModels包含父网格中嵌套网格的数量。
这里我更改了父网格中第一列的标题样式以及嵌套网格,并且我还使用了嵌套网格的CurrentCellValidating事件。同样,您可以在嵌套网格中使用任何事件并获取详细信息。