Log In
Home
Support
Demos
Documentation
Blogs
Training
Webinars
[Expand]General Information
[Collapse]WinForms Controls
  Prerequisites
 [Expand]What's Installed
 [Expand]Build an Application
 [Expand]Controls and Libraries
 [Expand]Common Features
  Get More Help
 [Collapse]API Reference
  [Expand]DevExpress.DataAccess.UI.Design
  [Expand]DevExpress.DataAccess.UI.EntityFramework
  [Expand]DevExpress.DataAccess.UI.Excel
  [Expand]DevExpress.DataAccess.UI.Localization
  [Expand]DevExpress.DataAccess.UI.ObjectBinding
  [Expand]DevExpress.DataAccess.UI.Sql
  [Expand]DevExpress.DataAccess.UI.Wizard
  [Expand]DevExpress.DataAccess.UI.Wizard.Services
  [Expand]DevExpress.DataAccess.UI.Wizard.Views
  [Expand]DevExpress.DocumentView
  [Expand]DevExpress.DocumentView.Controls
  [Expand]DevExpress.LookAndFeel
  [Expand]DevExpress.LookAndFeel.Helpers
  [Expand]DevExpress.Skins
  [Expand]DevExpress.Snap
  [Expand]DevExpress.Snap.API.Native
  [Expand]DevExpress.Snap.Core
  [Expand]DevExpress.Snap.Core.API
  [Expand]DevExpress.Snap.Core.Fields
  [Expand]DevExpress.Snap.Core.Forms
  [Expand]DevExpress.Snap.Core.Options
  [Expand]DevExpress.Snap.Core.Services
  [Expand]DevExpress.Snap.Extensions
  [Expand]DevExpress.Snap.Extensions.Localization
  [Expand]DevExpress.Snap.Extensions.UI
  [Expand]DevExpress.Snap.Localization
  [Expand]DevExpress.Snap.Options
  [Expand]DevExpress.Snap.Services
  [Expand]DevExpress.Utils
  [Expand]DevExpress.Utils.Animation
  [Expand]DevExpress.Utils.Controls
  [Expand]DevExpress.Utils.Drawing
  [Expand]DevExpress.Utils.Menu
  [Expand]DevExpress.Utils.Taskbar
  [Expand]DevExpress.Utils.Taskbar.Core
  [Expand]DevExpress.Utils.UI.Localization
  [Expand]DevExpress.Utils.VisualEffects
  [Expand]DevExpress.Utils.Win
  [Expand]DevExpress.XtraBars
  [Expand]DevExpress.XtraBars.Alerter
  [Expand]DevExpress.XtraBars.Docking
  [Expand]DevExpress.XtraBars.Docking2010
  [Expand]DevExpress.XtraBars.Docking2010.Customization
  [Expand]DevExpress.XtraBars.Docking2010.Views
  [Expand]DevExpress.XtraBars.Docking2010.Views.NativeMdi
  [Expand]DevExpress.XtraBars.Docking2010.Views.Tabbed
  [Expand]DevExpress.XtraBars.Docking2010.Views.Widget
  [Expand]DevExpress.XtraBars.Docking2010.Views.WindowsUI
  [Expand]DevExpress.XtraBars.Localization
  [Expand]DevExpress.XtraBars.Navigation
  [Expand]DevExpress.XtraBars.Ribbon
  [Expand]DevExpress.XtraBars.Ribbon.Gallery
  [Expand]DevExpress.XtraBars.Ribbon.ViewInfo
  [Expand]DevExpress.XtraBars.ToastNotifications
  [Expand]DevExpress.XtraBars.Utils
  [Expand]DevExpress.XtraBars.WinRTLiveTiles
  [Expand]DevExpress.XtraCharts
  [Expand]DevExpress.XtraCharts.Designer
  [Expand]DevExpress.XtraCharts.Wizard
  [Expand]DevExpress.XtraDataLayout
  [Expand]DevExpress.XtraDiagram
  [Expand]DevExpress.XtraDiagram.Options
  [Expand]DevExpress.XtraEditors
  [Expand]DevExpress.XtraEditors.ButtonPanel
  [Expand]DevExpress.XtraEditors.Calendar
  [Expand]DevExpress.XtraEditors.Camera
  [Expand]DevExpress.XtraEditors.Container
  [Expand]DevExpress.XtraEditors.Controls
  [Expand]DevExpress.XtraEditors.CustomEditor
  [Expand]DevExpress.XtraEditors.DXErrorProvider
  [Expand]DevExpress.XtraEditors.Filtering
  [Expand]DevExpress.XtraEditors.Mask
  [Expand]DevExpress.XtraEditors.Persistent
  [Expand]DevExpress.XtraEditors.Repository
  [Expand]DevExpress.XtraEditors.ViewInfo
  [Expand]DevExpress.XtraFilterEditor
  [Expand]DevExpress.XtraGauges.Presets.Styles
  [Expand]DevExpress.XtraGauges.Win
  [Expand]DevExpress.XtraGauges.Win.Base
  [Expand]DevExpress.XtraGauges.Win.Gauges.Circular
  [Expand]DevExpress.XtraGauges.Win.Gauges.Digital
  [Expand]DevExpress.XtraGauges.Win.Gauges.Linear
  [Expand]DevExpress.XtraGauges.Win.Gauges.State
  [Expand]DevExpress.XtraGrid
  [Expand]DevExpress.XtraGrid.Columns
  [Expand]DevExpress.XtraGrid.EditForm
  [Expand]DevExpress.XtraGrid.FilterEditor
  [Expand]DevExpress.XtraGrid.Localization
  [Expand]DevExpress.XtraGrid.Views.BandedGrid
  [Expand]DevExpress.XtraGrid.Views.BandedGrid.ViewInfo
  [Collapse]DevExpress.XtraGrid.Views.Base
   [Expand]BaseView Class
   [Expand]BaseViewAppearanceCollection Class
   [Expand]CellValueChangedEventArgs Class
    CellValueChangedEventHandler Delegate
   [Expand]ColumnEventArgs Class
    ColumnEventHandler Delegate
   [Collapse]ColumnView Class
     ColumnView Members
     ColumnView Constructor
    [Expand]ColumnView Properties
    [Collapse]ColumnView Events
      AsyncCompleted Event
      BeforeLeaveRow Event
      CellValueChanged Event
      CellValueChanging Event
      ColumnChanged Event
      ColumnFilterChanged Event
      ColumnPositionChanged Event
      ColumnUnboundExpressionChanged Event
      CustomColumnDisplayText Event
      CustomColumnSort Event
      CustomDrawEmptyForeground Event
      CustomDrawFilterPanel Event
      CustomFilterDialog Event
      CustomFilterDisplayText Event
      CustomRowFilter Event
      CustomUnboundColumnData Event
      DataManagerReset Event
      EndGrouping Event
      EndSorting Event
      FilterEditorCreated Event
      FilterPopupExcelCustomizeTemplate Event
      FilterPopupExcelData Event
      FilterPopupExcelPrepareTemplate Event
      FilterPopupExcelQueryFilterCriteria Event
      FocusedColumnChanged Event
      FocusedRowChanged Event
      FocusedRowLoaded Event
      FocusedRowObjectChanged Event
      HiddenEditor Event
      InitNewRow Event
      InvalidRowException Event
      RowCellDefaultAlignment Event
      RowDeleted Event
      RowDeleting Event
      RowLoaded Event
      RowUpdated Event
      SelectionChanged Event
      ShowFilterPopupCheckedListBox Event
      ShowFilterPopupDate Event
      ShowFilterPopupExcel Event
      ShowFilterPopupListBox Event
      ShowingEditor Event
      ShownEditor Event
      StartGrouping Event
      StartSorting Event
      SubstituteFilter Event
      SubstituteSortInfo Event
      UnboundExpressionEditorCreated Event
      ValidateRow Event
    [Expand]ColumnView Methods
   [Expand]ColumnViewAppearances Class
   [Expand]ColumnViewOptionsBehavior Class
   [Expand]ColumnViewOptionsFilter Class
   [Expand]ColumnViewOptionsFind Class
   [Expand]ColumnViewOptionsSelection Class
   [Expand]ColumnViewOptionsView Class
   [Expand]ColumnViewPrintAppearances Class
   [Expand]CustomColumnDataEventArgs Class
    CustomColumnDataEventHandler Delegate
   [Expand]CustomColumnDisplayTextEventArgs Class
    CustomColumnDisplayTextEventHandler Delegate
   [Expand]CustomColumnSortEventArgs Class
    CustomColumnSortEventHandler Delegate
   [Expand]CustomDrawEventArgs Class
    CustomDrawEventHandler Delegate
   [Expand]CustomDrawObjectEventArgs Class
    CustomDrawObjectEventHandler Delegate
   [Expand]CustomRowCellEventArgs Class
   [Expand]DragObjectDropEventArgs Class
    DragObjectDropEventHandler Delegate
   [Expand]DragObjectOverEventArgs Class
    DragObjectOverEventHandler Delegate
   [Expand]DragObjectStartEventArgs Class
    DragObjectStartEventHandler Delegate
   [Expand]FilterControlEventArgs Class
    FilterControlEventHandler Delegate
   [Expand]FocusedColumnChangedEventArgs Class
    FocusedColumnChangedEventHandler Delegate
   [Expand]FocusedRowChangedEventArgs Class
    FocusedRowChangedEventHandler Delegate
    GridAnimationType Enumeration
   [Expand]GridCell Class
    GridRowCellState Enumeration
   [Expand]InvalidRowExceptionEventArgs Class
    InvalidRowExceptionEventHandler Delegate
   [Expand]PrintInitializeEventArgs Class
    PrintInitializeEventHandler Delegate
   [Expand]RowAllowEventArgs Class
    RowAllowEventHandler Delegate
   [Expand]RowCellAlignmentEventArgs Class
    RowCellAlignmentEventHandler Delegate
   [Expand]RowCellCustomDrawEventArgs Class
    RowCellCustomDrawEventHandler Delegate
   [Expand]RowCellObjectCustomDrawEventArgs Class
   [Expand]RowEventArgs Class
    RowEventHandler Delegate
   [Expand]RowFilterEventArgs Class
    RowFilterEventHandler Delegate
   [Expand]RowObjectCustomDrawEventArgs Class
    RowObjectCustomDrawEventHandler Delegate
   [Expand]RowObjectEventArgs Class
    RowObjectEventHandler Delegate
   [Expand]RowPreviewCustomDrawEventArgs Class
    ScrollVisibility Enumeration
    ShowButtonModeEnum Enumeration
    ShowFilterPanelMode Enumeration
   [Expand]ValidateRowEventArgs Class
    ValidateRowEventHandler Delegate
   [Expand]ViewBaseOptions Class
   [Expand]ViewFilter Class
   [Expand]ViewPrintOptionsBase Class
  [Expand]DevExpress.XtraGrid.Views.Base.ViewInfo
  [Expand]DevExpress.XtraGrid.Views.Card
  [Expand]DevExpress.XtraGrid.Views.Card.ViewInfo
  [Expand]DevExpress.XtraGrid.Views.Grid
  [Expand]DevExpress.XtraGrid.Views.Grid.ViewInfo
  [Expand]DevExpress.XtraGrid.Views.Layout
  [Expand]DevExpress.XtraGrid.Views.Layout.Events
  [Expand]DevExpress.XtraGrid.Views.Layout.ViewInfo
  [Expand]DevExpress.XtraGrid.Views.Printing
  [Expand]DevExpress.XtraGrid.Views.Tile
  [Expand]DevExpress.XtraGrid.Views.WinExplorer
  [Expand]DevExpress.XtraGrid.WinExplorer
  [Expand]DevExpress.XtraLayout
  [Expand]DevExpress.XtraLayout.Customization
  [Expand]DevExpress.XtraLayout.HitInfo
  [Expand]DevExpress.XtraLayout.Localization
  [Expand]DevExpress.XtraLayout.Utils
  [Expand]DevExpress.XtraMap
  [Expand]DevExpress.XtraMap.Printing
  [Expand]DevExpress.XtraNavBar
  [Expand]DevExpress.XtraNavBar.ViewInfo
  [Expand]DevExpress.XtraPdfViewer
  [Expand]DevExpress.XtraPdfViewer.Commands
  [Expand]DevExpress.XtraPdfViewer.Localization
  [Expand]DevExpress.XtraPivotGrid
  [Expand]DevExpress.XtraPivotGrid.Data
  [Expand]DevExpress.XtraPrinting
  [Expand]DevExpress.XtraPrinting.Control
  [Expand]DevExpress.XtraPrinting.Preview
  [Expand]DevExpress.XtraPrintingLinks
  [Expand]DevExpress.XtraReports.UI
  [Expand]DevExpress.XtraRichEdit
  [Expand]DevExpress.XtraRichEdit.Commands
  [Expand]DevExpress.XtraRichEdit.Export
  [Expand]DevExpress.XtraRichEdit.Import
  [Expand]DevExpress.XtraRichEdit.Localization
  [Expand]DevExpress.XtraRichEdit.Menu
  [Expand]DevExpress.XtraScheduler
  [Expand]DevExpress.XtraScheduler.Drawing
  [Expand]DevExpress.XtraScheduler.Printing
  [Expand]DevExpress.XtraScheduler.Reporting
  [Expand]DevExpress.XtraScheduler.Reporting.UI
  [Expand]DevExpress.XtraScheduler.Services
  [Expand]DevExpress.XtraScheduler.Services.Implementation
  [Expand]DevExpress.XtraScheduler.UI
  [Expand]DevExpress.XtraSpellChecker
  [Expand]DevExpress.XtraSpellChecker.Localization
  [Expand]DevExpress.XtraSplashForm
  [Expand]DevExpress.XtraSplashScreen
  [Expand]DevExpress.XtraSpreadsheet
  [Expand]DevExpress.XtraSpreadsheet.Services
  [Expand]DevExpress.XtraTab
  [Expand]DevExpress.XtraTab.Buttons
  [Expand]DevExpress.XtraTab.ViewInfo
  [Expand]DevExpress.XtraTabbedMdi
  [Expand]DevExpress.XtraToolbox
  [Expand]DevExpress.XtraTreeList
  [Expand]DevExpress.XtraTreeList.Columns
  [Expand]DevExpress.XtraTreeList.Data
  [Expand]DevExpress.XtraTreeList.Localization
  [Expand]DevExpress.XtraTreeList.Menu
  [Expand]DevExpress.XtraTreeList.Nodes
  [Expand]DevExpress.XtraTreeList.Nodes.Operations
  [Expand]DevExpress.XtraTreeList.StyleFormatConditions
  [Expand]DevExpress.XtraTreeMap
  [Expand]DevExpress.XtraVerticalGrid
  [Expand]DevExpress.XtraVerticalGrid.Events
  [Expand]DevExpress.XtraVerticalGrid.Localization
  [Expand]DevExpress.XtraVerticalGrid.Rows
  [Expand]DevExpress.XtraWaitForm
  [Expand]DevExpress.XtraWizard
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Expand]WPF Controls
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Document Server
[Expand]Reporting
[Expand]Report Server
[Expand]Dashboard
[Expand]eXpressApp Framework
[Expand]CodeRush
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation

ColumnView.CustomUnboundColumnData Event

Enables data to be provided to, and modified data to be saved from visible unbound columns.

Namespace:DevExpress.XtraGrid.Views.Base
Assembly:DevExpress.XtraGrid.v17.2.dll

Expanded Syntax

Expanded Event Data

The event handler receives an argument of type CustomColumnDataEventArgs containing data related to this event.

The following CustomColumnDataEventArgs properties provide information specific to this event.
Property Description
Column Gets the unbound column currently being processed.
IsGetData Gets a Boolean value which indicates whether you should provide data for the currently processed cell.
IsSetData Gets whether the current cell's value should be stored in a custom data source.
ListSourceRowIndex Gets the current row's index in the data source.
Row Gets the currently processed row.
Value Gets or sets the value of the cell currently being processed.

Expanded Remarks

In the Grid Control, you can create unbound (calculated) columns. These columns are not bound to any field in the underlying data source. Data for these columns can be provided either by creating an expression via the GridColumn.UnboundExpression property or by handling the CustomUnboundColumnData event. To learn about the syntax of expressions, see Expressions.

The CustomUnboundColumnData event fires only for visible unbound columns. It fires in two cases:

  • When the grid is loaded, it raises the CustomUnboundColumnData event to populate the unbound columns. The event's IsGetData parameter will be set to true (consequently the IsSetData parameter will be set to false). In this case, you need to supply data for the currently processed cell. Obtain the required value from a custom data source, and assign it to the Value parameter.

  • When an unbound column's data is modified using the grid, the CustomUnboundColumnData event is fired with the IsSetData parameter set to true (consequently the IsGetData parameter is set to false). In this case, you should save the modified data specified by the Value property, back to the data source.
The currently processed cell is identified by the column and row. The CustomColumnDataEventArgs.Column parameter refers to the column. To identify the row, use the CustomColumnDataEventArgs.ListSourceRowIndex or CustomColumnDataEventArgs.Row event parameter.
Note

If you need to get or set specific cell values while handling the CustomUnboundColumnData event, use methods provided by the bound data source. The event's Row and ListSourceRowIndex parameters allow you to identify the current data row. To get values in a specific row in the data source, you can use the GetListSourceRowCellValue method or methods provided by row objects.

Note

The CustomUnboundColumnData event fires for each cell. However, due to the grid control's data processing algorithms, this event may fire multiple times for each cell. The grid control doesn't cache data you provided via the CustomUnboundColumnData event. If providing data using this event takes considerable time, you need to manually cache data.

Handle this event only to provide unbound data column functionality. Modifying any CustomColumnDataEventArgs.Column property within the CustomUnboundColumnData event handler is not supported.

Note

Server Mode does not support sorting, grouping, filtering and summary calculation for unbound columns whose values are provided via the CustomUnboundColumnData event. These features are still supported for unbound columns that are populated using expressions (see GridColumn.UnboundExpression).

Refer to the Unbound Columns document for more information.

Expanded Example 1

Assume that the Grid Control is bound to a table that contains the "Quantity", "UnitPrice" and "Discount" columns. The example below shows how to add an unbound column to the grid to display the amount of each order according to the expression: Quantity*UnitPrice*(1-Discount).

The result is displayed below:

For another example which illustrates working with unbound columns, see the Unbound Columns tutorial.

Expanded Example 2

Show Me

A complete sample project is available in the DevExpress Code Examples database at http://www.devexpress.com/example=E3354.

GridView does not cache values of an unbound column, because it is impossible to determine when the cache should be cleared automatically. GridView just displays values provided by the CustomUnboundColumnData event. So, to display a specific value in a cell, you need to pass a corresponding value to the e.Value parameter based on a processed column and row. What you return as the e.Value parameter is what is displayed in GridView. Each time a cell needs to be updated, the CustomUnboundColumnData event is called.

This example demonstrates how a simple caching mechanism can be implemented. In this project, you can perform all supported operations with GridView, such as sorting/deleting/adding records, and the unbound column will display proper values. This is because values of the ID column are used as key values. This column is readonly and contains only unique values. So, rows can be always identified.

Expanded See Also

How would you rate this topic?​​​​​​​