Syncfusion嵌套网格行为

时间:2014-06-17 17:45:16

标签: wpf xaml c#-4.0 syncfusion

您好我有一个GridDataControl,它通过关系与子网格相关。在父网格上应用了一种行为,它格式化网格并获取列标题名称。我想将这种相同的行为应用于子网格。两个网格的数据格式相同,但主子网格不可访问,只有其列通过GridDataVisibleColumn属性。

关于如何做到这一点的任何想法?

1 个答案:

答案 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事件。同样,您可以在嵌套网格中使用任何事件并获取详细信息。