Advanced DataGrid xceedsoftware wpftoolkit Wiki

wpf advanced datagrid

When SfDataGrid.SelectionUnit is Cell, you can get information about the cells that are selected by calling SfDataGrid.GetSelectedCells method. When SelectionUnit is Row, you can get information about the rows that are selected using SfDataGrid.SelectedItem and SfDataGrid.SelectedItems properties. Bind the collection created in previous step to SfDataGrid.ItemsSource property in XAML by setting ViewModel as DataContext. Being able to show details for a DataGrid row is extremely useful, and with the WPF DataGrid it’s both easy and highly customizable, as you can see from the examples provided in this tutorial.

wpf advanced datagrid

Built-in add new row

One of the main strengths of FlexGrid is the ability to customize every aspect of the appearance of the entire grid and individual cells. Choose from 27 built-in themes using the SfSkinManager for a rich user interface. Easily customize all aspects of the DataGrid appearance using the Theme Studio utility. Users can freeze rows and columns at the top, bottom, left, and right positions, similar to in Excel.

Sponsor this project

In the previous chapter, we had a look at just how easy you could get a WPF DataGrid up and running. One of the reasons why it was so easy is the fact that the DataGrid will automatically generate appropriate columns for you, based on the data source you use. Extended WPF Toolkit™ by Xceed is the number one collection of WPF controls, components and utilities for creating next generation Windows applications. Use it to build professional looking, modern, and easy to use WPF applications. It has been downloaded more than 1 million times here, on Codeplex, and on NuGet. Sort data against one or more columns with multiple customization operations.

  1. Open your WPF project in Visual Studio and navigate to the XAML file where you want to add the data grid.
  2. Designed specifically for WPF, it takes full advantage of the platform’s capabilities, providing a seamless experience when working with large amounts of data.
  3. After completing these steps, your Xceed Data Grid for WPF should be activated and ready for use.
  4. This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.For more information see the .NET Foundation Code of Conduct.
  5. Choose from 27 built-in themes using the SfSkinManager for a rich user interface.

Built-in data error indication and validation

For this example, and the others in this article, I am using the ubiquitous Northwind database. Details of how to download it for SQL Express are given in the MSDN library. The DataSet design for these examples was created via simple drag and drop from the Server Explorer.

Load Large Data Sets

wpf advanced datagrid

Tooltips display additional information in a pop-up window when the pointer hovers over cells in the DataGrid. Users can change the visibility of columns at runtime using the customizable column chooser UI. Manipulate data using the DataPager control to view records in multiple pages. Display rows at the top and bottom of the grid with data that is not bound to the ItemsSource. Select rows or cells in a similar way to Excel for all keyboard navigations. Filter data with the row filter or an intuitive, built-in, Excel-inspired filtering UI.

wpf advanced datagrid

Easily export the WPF DataGrid control to various file formats such as Excel, PDF, or CSV. Quickly print and export the WPF DataGrid to Excel, CSV, and PDF file formats. Read the Documentation about how to use these features.The API Documentation describes the global API for DGX. An Excel-like advanced filtering functionality is available when using auto filtering. This Advanced Filtering functionality can be used as an alternative to the FilterRow. Currently, there is a lack of documentation and examples demonstrating common DataGrid usage scenarios (which is to be expected, as it is an out-of-band release).

The style of the column header can easily be modified via the ColumnHeaderStyle of the DataGrid. However, if you modify the background colour of the column header, you will find that the sort arrows disappear! This is because the arrows are not part of the ColumnHeader template; instead, they are added programmatically.

I did several tests, and in some cases the computed width is too big (this is minor problem), for some cases is too small. The problem starts at its core procedure — computing the required width for TextBox/TextBlock, computed width is always 1 unit less than it should be (if I set the width to computed one, 1 pixel from text is always clipped). I didn’t find any standard method to do it (AFAIK WPF provides way to clip the content to desired width, my problem is exactly opposite), so I come up with such ugly workaround, which does not work too well. To begin using Xceed Data Grid in your WPF applications, you first need to download the library from our website.

For example, in some cases, you might wish to submit a batch of changes via a “Submit” button, or you may wish to have the database updated as the user commits each row edit. In order to support these, the rows that the DataTable contains have a RowState property which indicates whether they contain changes which should be synchronized with the database. The synchronization process is easily achieved via the TableAdapter’s Update method.

You can also sort by caption summary values when the grid is grouped or by writing custom logic. For details of how this style was assembled, download the article source and pick apart the code. There is nothing special in there, just the usual application of styles and cut-n-paste control template modification. The workaround given here uses validation to ensure that all the DataTable constraints are satisfied before the updates are committed. The following slightly lengthy validation rule can be applied at cell and row level.

You can customize the filtering operations by handling SfDataGrid.FilterChanging and SfDataGrid.FilterChanged events. The SearchControl provides powerful search capability, providing end-users with an easy to use UI for finding items in the datagrid’s cells. Works with Master/Detail views, collapsed groups, and also with data virtualization enabled. Cells with identical text can automatically be displayed as one larger horizontal or vertical cell (or both). Cells can also be merged programmatically to display their content in a combined way (as shown by the City and Country columns in the image below).

The WPF DataGrid has an interesting feature called RowDetails, which is an area of customisable content beneath each row. You can use the RowDetailsVisibilityMode property of the DataGrid to specify whether to display details just for the selected rows or for all the rows. When a new row or changes to an existing row is committed to a DataTable, constraints are checked (e.g., nullable columns, unique constraints) and an exception thrown if they are violated. It would make sense to catch these exceptions and display the problem as a validation error to the DataGrid user. Unfortunately, the WPF DataGrid v1 has a bug whereby it does not catch exceptions when IEditableObject.EndEdit is invoked.

The complete example above can be found in the DataSetCRUDExample class which shows how a CRUD interface can be created for a DataSet with a few lines of code. Fortunately, the absence of this control has not hampered the popularity of WPF. The versatility of the ListView control allows very flexible read-only DataGrid functionality. Also, the lack of a DataGrid within the WPF APIs was an excellent opportunity for third party component providers; see Michael Sync’s blog for a roundup of the five leading third party WPF DataGrids. As you can see, it’s extremely easy to get started with the DataGrid, but it’s also a highly customizable control.