The WinForms DataGrid control is used to efficiently display and manipulate tabular data. Its rich feature set includes data binding, editing, sorting, filtering, grouping, and exporting to Excel/PDF file formats and more. It has also been optimized for working with millions of records as well as handling high frequency real-time updates.
Load millions of records instantly.
Data processing operations like sorting, filtering, grouping, summaries, and real-time updates are handled efficiently using PLINQ.
Quickly export the data grid content to Excel or PDF file formats.
The WinForms DataGrid has data-binding support to work with all popular data sources like SQL server, Oracle, DataTable, and IEnumerable, and data providers like LINQ to SQL, ADO.NET, Entity Framework, and WCF Data Service.
Use different built-in column types such as ComboBox, DateTime, CheckBox, and more to edit cell values. Commit or rollback changes when the data object implements IEditableObject. Also add new records dynamically.
The WinForms DataGrid control supports various column types. Users can display information and easily edit cell values using built-in intuitive editors such as TextBox, Numeric TextBox (Includes currency and percentage TextBoxes), DatePicker, and CheckBox.
Lookup data using the dropdown column type. The ComboBox editor is used to select an item from the dropdown.
WinForms DataGrid allows you to create your own custom columns to perform customized operations for your business application use cases. It is also possible to change the behavior of built-in column types.
Validate cells and display error information based on the validation types such as IDataErrorInfo, INotifyDataErrorInfo, Data Annotations. It is also possible to use cell, row, and custom validations.
Sort data based on one or more columns with multiple customization operations. You can also sort by caption summary values when the grid is grouped, or by writing custom logic.
Group data by one or more columns either through mouse and touch in the group drop area or in code behind. You can also group data with custom logic.
Filter data using the built-in filter row or Excel-inspired filtering UI.
Calculate and display sum, min, max, average, count, and custom aggregates in a table or group. Calculate summaries for selected records. Display summaries with different summary types, such as:
The WinForms DataGrid control can handle high-frequency updates even under the most demanding scenarios where the data is sorted and grouped in real-time. Summaries are also calculated and displayed in real-time scenarios.
Add a new record in an underlying collection with a built-in row. It is also possible to place a newly added row at the top or bottom of a data grid.
Delete selected records in a data grid by pressing the Delete
key. You can also change it to another key instead of the default key.
Search and highlight text in a data grid and filter records based on the search text.
Select rows or cells for all keyboard navigations and mouse interactions like Excel.
Customize the appearance of cells, rows, or columns based on data.
Users can adjust (auto fit) the row height based on the content of any column or certain columns to enhance readability. It is also possible to set the row height conditionally.
Users can freeze rows and columns at the top, bottom, left, and right positions, similar to Excel. Horizontal and vertical scrolling can be performed, except on fixed columns and rows.
Display unbound columns with custom data . This control supports an expression to calculate values based on other columns.
Display rows at the top and bottom of the grid with data that is not bound to a field or data source.
Dynamically merge data in the adjacent cells and present that data in a single cell. Merge data based on content by writing your own custom logic.
Stacked headers (column header span) allow users to show unbound header rows. They span the stacked header columns across multiple rows and columns.
A master-details view (nested DataGridView) can be represented using nested grids that can be expanded and collapsed. Functions like editing, sorting, filtering, and grouping are supported. Unlimited levels of nested grid relationships are allowed.
Display additional information of a row. View the preview row by expanding and collapsing the record as required. Custom view can also be shown by using custom drawing logic.
Manipulate data using the DataPager control to view records in multiple pages. DataPager also supports on-demand loading of data.
The appearance of a DataGrid and its inner elements, such as rows, cells, columns, headers, and summary rows, can be customized easily.
Users can change the visibility of columns at runtime using the customizable column chooser UI.
The WinForms DataGrid control provides an entirely customized context menu to expose the functionality on the user interface. Users can create context menus for different rows such as record row, summary row, and group caption header in an efficient manner.
Export a data grid to Excel and PDF file formats with the rich set of options.
Localize all the static default strings in the WinForms DataGrid to any desired language.
Displays text in the right-to-left (RTL) direction for users working with languages like Hebrew, Arabic, or Persian.
Adjust (auto fit) the column width based on the content of any column or column header. Fit all the columns within the viewport of a data grid.
Create records on demand by automatically enabling data virtualization. Load millions of records of data instantly with virtualization enabled.
Perform clipboard operations such as cut, copy, and paste within a control and between other applications such as Notepad or Excel.
Serialize the WinForms DataGrid settings to XML format and load back (deserialization) to the data grid using built-in serialization options.
The WinForms DataGrid control is compatible with Coded UI and UFT (formerly QTP) automation tools to automate applications.
Easily get started with the WinForms DataGrid using a few simple lines of C# code example as demonstrated below. Also explore our WinForms DataGrid Example that shows you how to render and configure the WinForms DataGrid.
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using Syncfusion.WinForms.DataGrid;
namespace WindowsFormsApplication1
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SfDataGrid sfDataGrid = new SfDataGrid();
this.Controls.Add(sfDataGrid);
sfDataGrid.DataSource = new OrderInfoCollection().Orders;
sfDataGrid.Location = new System.Drawing.Point(12, 12);
sfDataGrid.Size = new System.Drawing.Size(240, 150);
}
}
}
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using Syncfusion.WinForms.DataGrid;
namespace WindowsFormsApplication1
{
public class OrderInfo : INotifyPropertyChanged
{
decimal? orderID;
string customerId;
string country;
string customerName;
string shippingCity;
public decimal? OrderID
{
get { return orderID; }
set { orderID = value; this.OnPropertyChanged("OrderID"); }
}
public string CustomerID
{
get { return customerId; }
set { customerId = value; this.OnPropertyChanged("CustomerID"); }
}
public string CustomerName
{
get { return customerName; }
set { customerName = value; this.OnPropertyChanged("CustomerName"); }
}
public string Country
{
get { return country; }
set { country = value; this.OnPropertyChanged("Country"); }
}
public string ShipCity
{
get { return shippingCity; }
set { shippingCity = value; this.OnPropertyChanged("ShipCity"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using Syncfusion.WinForms.DataGrid;
namespace WindowsFormsApplication1
{
public class OrderInfoCollection
{
private ObservableCollection<OrderInfo> orders;
public ObservableCollection<OrderInfo> Orders
{
get { return orders; }
set { orders = value; }
}
public OrderInfoCollection()
{
orders = new ObservableCollection<OrderInfo>();
orders.Add(new OrderInfo() { OrderID = 1001, CustomerName = "Thomas Hardy", Country = "Germany", CustomerID = "ALFKI", ShipCity = "Berlin" });
orders.Add(new OrderInfo() { OrderID = 1002, CustomerName = "Laurence Lebihan", Country = "Mexico", CustomerID = "ANATR", ShipCity = "Mexico" });
orders.Add(new OrderInfo() { OrderID = 1003, CustomerName = "Antonio Moreno", Country = "Mexico", CustomerID = "ANTON", ShipCity = "Mexico" });
orders.Add(new OrderInfo() { OrderID = 1004, CustomerName = "Thomas Hardy", Country = "UK", CustomerID = "AROUT", ShipCity = "London" });
orders.Add(new OrderInfo() { OrderID = 1005, CustomerName = "Christina Berglund", Country = "Sweden", CustomerID = "BERGS", ShipCity = "Lula" });
}
}
}
The Syncfusion WinForms DataGrid provides the following features:
You can find our WinForms DataGrid demo on GitHub location.
No, this is a commercial product and requires a paid license. However, a free community license is also available for companies and individuals whose organizations have less than $1 million USD in annual gross revenue, 5 or fewer developers, and 10 or fewer total employees.
A good place to start would be our comprehensive getting started documentation.
Greatness—it’s one thing to say you have it, but it means more when others recognize it. Syncfusion is proud to hold the following industry awards.