windowsforms-devexpress-dot-xtragrid-44497d4b.md
A satellite control that allows the Data Grid to split its client area into two resizeable regions, separated by a splitter.
Namespace : DevExpress.XtraGrid
Assembly : DevExpress.XtraGrid.v25.2.dll
NuGet Packages : DevExpress.Win.Grid, DevExpress.Win.Navigation
[DXLicenseWinForms]
public class GridSplitContainer :
SplitContainerControl
<DXLicenseWinForms>
Public Class GridSplitContainer
Inherits SplitContainerControl
The following members return GridSplitContainer objects:
The GridSplitContainer supports the Split Presentation feature for a GridControl. This feature allows an end-user to split a GridControl horizontally or vertically.
Horizontal Split:
Vertical Split:
When added from a toolbox, a GridSplitContainer will contain a new GridControl internally. This technique for creating a GridSplitContainer is applicable for new projects.
Another way of creating a GridSplitContainer is appropriate for GridControls that exist in your old applications. At design time, click the Grid Control’s tag and then click the Add split container link in the Grid Control Tasks pane:
The Add split container link will create a new GridSplitContainer and place your old GridControl into the newly created container.
A GridSplitContainer doesn’t split the internal Grid Control at design time. The split functionality needs to be activated at runtime by an end-user or via the GridSplitContainer.ShowSplitView method.
If the GridSplitContainer.SynchronizeScrolling property is set to Default or True , certain grid properties are automatically adjusted when the grid control is split. When it is split vertically, the column headers are automatically made visible and horizontal scrolling is disabled. If you do not need this behavior, you can restore the previous settings via the GridOptionsView.ShowColumnHeaders and GridView.HorzScrollVisibility options after the grid is split. When the grid is split horizontally, the vertical scrolling is disabled via the GridView.VertScrollVisibility option. If required, you can enable vertical scrolling using this property after the grid is split.
See Split Presentation to learn more.
This example demonstrates how to create a GridSplitContainer in code, enable the Split View feature and customize the embedded Grid Controls being split.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using System.Collections;
namespace CreateGridSplitContainer {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
IList dataSource = CreateDataSource();
GridSplitContainer gridSplitContainer = new GridSplitContainer();
gridSplitContainer.Parent = this;
gridSplitContainer.Location = new Point(0, 0);
gridSplitContainer.Size = new Size(350, 300);
gridSplitContainer.Initialize();
gridSplitContainer.SplitViewCreated += new EventHandler(gridSplitContainer_SplitViewCreated);
// Customize the first grid control.
GridControl grid = gridSplitContainer.Grid;
GridView view = grid.MainView as GridView;
// Specify a data source.
grid.DataSource = dataSource;
// Resize columns according to their values.
view.BestFitColumns();
// Locate a row containing a specific value.
view.FocusedRowHandle = view.LocateByValue("Country", "UK");
// Display a splitter and second grid control.
gridSplitContainer.ShowSplitView();
// Customize the second grid control.
GridControl secondGrid = gridSplitContainer.SplitChildGrid;
GridView secondView = secondGrid.MainView as GridView;
// Locate a row containing a specific value.
secondView.FocusedRowHandle = secondView.LocateByValue("Country", "Sweden");
}
private void gridSplitContainer_SplitViewCreated(object sender, EventArgs e) {
// Display the Embedded Navigator for the second grid control
// in the horizontally oriented Split View.
GridSplitContainer gsc = sender as GridSplitContainer;
if (!gsc.Horizontal)
gsc.SplitChildGrid.UseEmbeddedNavigator = true;
}
private IList CreateDataSource() {
List<MyRecord> list = new List<MyRecord>();
list.Add(new MyRecord(1, "Rene Phillips", "USA"));
list.Add(new MyRecord(2, "Robert McKinsey", "UK"));
list.Add(new MyRecord(3, "Christina Berglund", "Sweden"));
list.Add(new MyRecord(4, "Martín Sommer", "Spain"));
list.Add(new MyRecord(5, "Laurence Lebihan", "France"));
list.Add(new MyRecord(6, "Elizabeth Lincoln", "Canada"));
list.Add(new MyRecord(7, "Steven Baum", "USA"));
return list;
}
}
public class MyRecord {
public int ID { get; set; }
public string Country { get; set; }
public string Name { get; set; }
public MyRecord(int id, string name, string country) {
ID = id;
Name = name;
Country = country;
}
}
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraGrid.Columns
Imports System.Collections
Namespace CreateGridSplitContainer
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim dataSource As IList = CreateDataSource()
Dim gridSplitContainer As New GridSplitContainer()
gridSplitContainer.Parent = Me
gridSplitContainer.Location = New Point(0, 0)
gridSplitContainer.Size = New Size(350, 300)
gridSplitContainer.Initialize()
AddHandler gridSplitContainer.SplitViewCreated, AddressOf gridSplitContainer_SplitViewCreated
' Customize the first grid control.
Dim grid As GridControl = gridSplitContainer.Grid
Dim view As GridView = TryCast(grid.MainView, GridView)
' Specify a data source.
grid.DataSource = dataSource
' Resize columns according to their values.
view.BestFitColumns()
' Locate a row containing a specific value.
view.FocusedRowHandle = view.LocateByValue("Country", "UK")
' Display a splitter and second grid control.
gridSplitContainer.ShowSplitView()
' Customize the second grid control.
Dim secondGrid As GridControl = gridSplitContainer.SplitChildGrid
Dim secondView As GridView = TryCast(secondGrid.MainView, GridView)
' Locate a row containing a specific value.
secondView.FocusedRowHandle = secondView.LocateByValue("Country", "Sweden")
End Sub
Private Sub gridSplitContainer_SplitViewCreated(ByVal sender As Object, ByVal e As EventArgs)
' Display the Embedded Navigator for the second grid control
' in the horizontally oriented Split View.
Dim gsc As GridSplitContainer = TryCast(sender, GridSplitContainer)
If (Not gsc.Horizontal) Then
gsc.SplitChildGrid.UseEmbeddedNavigator = True
End If
End Sub
Private Function CreateDataSource() As IList
Dim list As New List(Of MyRecord)()
list.Add(New MyRecord(1, "Rene Phillips", "USA"))
list.Add(New MyRecord(2, "Robert McKinsey", "UK"))
list.Add(New MyRecord(3, "Christina Berglund", "Sweden"))
list.Add(New MyRecord(4, "Martín Sommer", "Spain"))
list.Add(New MyRecord(5, "Laurence Lebihan", "France"))
list.Add(New MyRecord(6, "Elizabeth Lincoln", "Canada"))
list.Add(New MyRecord(7, "Steven Baum", "USA"))
Return list
End Function
End Class
Public Class MyRecord
Private privateID As Integer
Public Property ID() As Integer
Get
Return privateID
End Get
Set(ByVal value As Integer)
privateID = value
End Set
End Property
Private privateCountry As String
Public Property Country() As String
Get
Return privateCountry
End Get
Set(ByVal value As String)
privateCountry = value
End Set
End Property
Private privateName As String
Public Property Name() As String
Get
Return privateName
End Get
Set(ByVal value As String)
privateName = value
End Set
End Property
Public Sub New(ByVal id As Integer, ByVal name As String, ByVal country As String)
ID = id
Name = name
Country = country
End Sub
End Class
End Namespace
Show 12 items
Object MarshalByRefObject Component Control ScrollableControl XtraScrollableControl XtraPanel DevExpress.Utils.Controls.PanelBase PanelControl GroupControl SplitContainerControl GridSplitContainer
See Also