# Column Groups View

## Add groups view definition by using the Property Builder

Since R3 2015 you can add and configure the groups view definition in the [property builder](https://www.telerik.com/products/winforms/documentation/controls/gridview/design-time-support/property-builder). This section will show you how you can use the property builder to setup the groups view definition.

1. Before configuring the view definition you should add all regular columns to the grid. For example you can add some columns directly in the property builder window. Figure 2 shows how you can do that.

   > caption Figure 2: Add the default columns.

   ![Telerik UI for WinForms RadGridView Property Builder showing the default columns being added before configuring a column groups view](https://www.telerik.com/products/winforms/documentation/assets/23e36f9c14f708db5c1a10ea63ea6df4/gridview-viewdefinitions-column-groups-view003.gif)

2. The next step is to change the **ViewDefinition** to **ColumnGroups View**. `Figure 3` shows where you can find this property. Changing the view will add the default root group.

   > caption Figure 3: Change the ViewDefinition

   ![Telerik UI for WinForms RadGridView Property Builder showing the ViewDefinition property changed to ColumnGroups View](https://www.telerik.com/products/winforms/documentation/assets/1f3223df9d62b2c5127aafd1a53e21ed/gridview-viewdefinitions-column-groups-view002.png)

3. Now you are ready to add the groups. This can be achieved by selecting the **Columns groups** node which will show the button for adding groups.

   > caption Figure 4: Add Groups

   ![Telerik UI for WinForms RadGridView Property Builder showing column groups being added in the Columns groups node](https://www.telerik.com/products/winforms/documentation/assets/f61a26510f76b6f2a88be04cb1eee4e2/gridview-viewdefinitions-column-groups-view004.gif)

4. The final step is to arrange the groups. This can easily achieved by just drag and drop columns or groups to the desired position.

   > caption Figure 5: Arrange the columns and groups

   ![Telerik UI for WinForms RadGridView Property Builder showing columns and groups arranged by drag and drop](https://www.telerik.com/products/winforms/documentation/assets/549ff49bf4a86f56df69053d4ced154c/gridview-viewdefinitions-column-groups-view005.gif)

The property builder allows you to edit the groups properties as well. Once a particular group is selected you will be able to change its properties.

> caption Figure 6 Change the group properties

![Telerik UI for WinForms RadGridView Property Builder showing editable properties for a selected column group](https://www.telerik.com/products/winforms/documentation/assets/8c4a9b050dfef297199603efdbad7856/gridview-viewdefinitions-column-groups-view006.png)

Just as its name says, this view enables grouping of columns. Every column group can have an unlimited number of subgroups or rows containing columns. In the following example, the grid is bound to the `Customers` table from the Northwind data base.

First instantiate **ColumnGroupsViewDefinition** and add some groups.

#### Create groups

```C#
ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition();
view.ColumnGroups.Add(new GridViewColumnGroup("Customer Contact"));
view.ColumnGroups.Add(new GridViewColumnGroup("Details"));
view.ColumnGroups[1].Groups.Add(new GridViewColumnGroup("Address"));
view.ColumnGroups[1].Groups.Add(new GridViewColumnGroup("Contact"));
```

```VB.NET
Dim view As New ColumnGroupsViewDefinition()
view.ColumnGroups.Add(New GridViewColumnGroup("Customer Contact"))
view.ColumnGroups.Add(New GridViewColumnGroup("Details"))
view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Address"))
view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Contact"))
```

Then add at least one row. This row will contain the desired columns.

#### Add rows to groups

```C#
view.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow());
view.ColumnGroups[0].Rows[0].ColumnNames.Add("CompanyName");
view.ColumnGroups[0].Rows[0].ColumnNames.Add("ContactName");
view.ColumnGroups[0].Rows[0].ColumnNames.Add("ContactTitle");

view.ColumnGroups[1].Groups[0].Rows.Add(new GridViewColumnGroupRow());
view.ColumnGroups[1].Groups[0].Rows[0].ColumnNames.Add("Address");
view.ColumnGroups[1].Groups[0].Rows[0].ColumnNames.Add("City");
view.ColumnGroups[1].Groups[0].Rows[0].ColumnNames.Add("Country");

view.ColumnGroups[1].Groups[1].Rows.Add(new GridViewColumnGroupRow());
view.ColumnGroups[1].Groups[1].Rows[0].ColumnNames.Add("Phone");
view.ColumnGroups[1].Groups[1].Rows[0].ColumnNames.Add("Fax");
```

```VB.NET
view.ColumnGroups(0).Rows.Add(New GridViewColumnGroupRow())
view.ColumnGroups(0).Rows(0).ColumnNames.Add("CompanyName")
view.ColumnGroups(0).Rows(0).ColumnNames.Add("ContactName")
view.ColumnGroups(0).Rows(0).ColumnNames.Add("ContactTitle")

view.ColumnGroups(1).Groups(0).Rows.Add(New GridViewColumnGroupRow())
view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("Address")
view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("City")
view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("Country")

view.ColumnGroups(1).Groups(1).Rows.Add(New GridViewColumnGroupRow())
view.ColumnGroups(1).Groups(1).Rows(0).ColumnNames.Add("Phone")
view.ColumnGroups(1).Groups(1).Rows(0).ColumnNames.Add("Fax")
```

At the end simply set the **ViewDefinitions** property to the newly created **ViewDefinition** instance.

#### Set the ViewDefinition property of RadGridView

```C#
radGridView1.ViewDefinition = view;
```

```VB.NET
RadGridView1.ViewDefinition = view
```

The result is:

> caption Figure 1: ColumnGroups ViewDefinition

![Telerik UI for WinForms RadGridView showing the resulting ColumnGroups ViewDefinition layout with grouped columns](https://www.telerik.com/products/winforms/documentation/assets/f7fe3abafe80978c5ce98a948ba42f02/gridview-viewdefinitions-column-groups-view001.png)

> caution In order to pin a certain group, you should do it after the RadGridView.**ViewDefinition** property is set and the grid is populated with data.

# Important properties

* **GridViewColumnGroup**
  * **ShowHeader:** Gets or sets a value indicating whether group header is visible. Works only for top level groups.
  * **RowSpan:** Gets or set the vertical span of the group (the height) in pixels.

* **GridViewColumnGroupRow**
  * **MinHeight:** Gets or sets the minimum height of the row. If the property is not set, the row height will be equal to the maximum RowSpan of the columns in that row.

## See Also

* [HTML View](https://www.telerik.com/products/winforms/documentation/controls/gridview/view-definitions/html-view)

* [Overview](https://www.telerik.com/products/winforms/documentation/controls/gridview/view-definitions/overview)

* [Table View](https://www.telerik.com/products/winforms/documentation/controls/gridview/view-definitions/table-view)
