[Expand]General Information
[Collapse]WinForms Controls
  .NET Core Support
  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
  [Expand]DevExpress.DataAccess.UI.Design
  [Expand]DevExpress.DataAccess.UI.EntityFramework
  [Expand]DevExpress.DataAccess.UI.Excel
  [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.Behaviors
  [Expand]DevExpress.Utils.Controls
  [Expand]DevExpress.Utils.DragDrop
  [Expand]DevExpress.Utils.Drawing
  [Expand]DevExpress.Utils.Filtering
  [Expand]DevExpress.Utils.Layout
  [Expand]DevExpress.Utils.Menu
  [Expand]DevExpress.Utils.MVVM
  [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.Base
  [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.FluentDesignSystem
  [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.ToolbarForm
  [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.Docking
  [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.XtraGantt
  [Expand]DevExpress.XtraGantt.Base.Scheduling
  [Expand]DevExpress.XtraGantt.Exceptions
  [Expand]DevExpress.XtraGantt.Localization
  [Expand]DevExpress.XtraGantt.Scheduling
  [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
  [Expand]DevExpress.XtraGrid.Views.Base
  [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.Converter
  [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.Extensions
  [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.Menu
  [Expand]DevExpress.XtraScheduler
  [Expand]DevExpress.XtraScheduler.Drawing
  [Expand]DevExpress.XtraScheduler.GoogleCalendar
  [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
  [Collapse]DevExpress.XtraTreeList
   [Expand]BeforeCollapseEventArgs Class
    BeforeCollapseEventHandler Delegate
   [Expand]BeforeDragNodeEventArgs Class
    BeforeDragNodeEventHandler Delegate
   [Expand]BeforeExpandEventArgs Class
    BeforeExpandEventHandler Delegate
   [Expand]BeforeFocusNodeEventArgs Class
    BeforeFocusNodeEventHandler Delegate
   [Expand]CalcNodeDragImageIndexEventArgs Class
    CalcNodeDragImageIndexEventHandler Delegate
   [Expand]CalcNodeHeightEventArgs Class
    CalcNodeHeightEventHandler Delegate
   [Expand]CellEventArgs Class
   [Expand]CellValueChangedEventArgs Class
    CellValueChangedEventHandler Delegate
   [Expand]ClipboardNodePastingEventArgs Class
   [Expand]ColumnChangedEventArgs Class
    ColumnChangedEventHandler Delegate
    ColumnFilterPopupMode Enumeration
   [Expand]CompareNodeValuesEventArgs Class
    CompareNodeValuesEventHandler Delegate
   [Expand]CreateCustomNodeEventArgs Class
    CreateCustomNodeEventHandler Delegate
   [Expand]CustomDrawColumnHeaderEventArgs Class
    CustomDrawColumnHeaderEventHandler Delegate
   [Expand]CustomDrawEmptyAreaEventArgs Class
    CustomDrawEmptyAreaEventHandler Delegate
   [Expand]CustomDrawEventArgs Class
   [Expand]CustomDrawFooterCellEventArgs Class
    CustomDrawFooterCellEventHandler Delegate
   [Expand]CustomDrawFooterEventArgs Class
    CustomDrawFooterEventHandler Delegate
   [Expand]CustomDrawNodeButtonEventArgs Class
    CustomDrawNodeButtonEventHandler Delegate
   [Expand]CustomDrawNodeCellEventArgs Class
    CustomDrawNodeCellEventHandler Delegate
   [Expand]CustomDrawNodeImagesEventArgs Class
    CustomDrawNodeImagesEventHandler Delegate
   [Expand]CustomDrawNodeIndicatorEventArgs Class
    CustomDrawNodeIndicatorEventHandler Delegate
   [Expand]CustomDrawNodePreviewEventArgs Class
    CustomDrawNodePreviewEventHandler Delegate
   [Expand]CustomDrawRowFooterCellEventArgs Class
    CustomDrawRowFooterCellEventHandler Delegate
   [Expand]CustomDrawRowFooterEventArgs Class
    CustomDrawRowFooterEventHandler Delegate
   [Expand]CustomizeNewNodeFromOuterDataEventArgs Class
    CustomizeNewNodeFromOuterDataEventHandler Delegate
   [Expand]CustomRowFilterEventArgs Class
   [Expand]EditFormHiddenEventArgs Class
   [Expand]EditFormPreparedEventArgs Class
    EditFormResult Enumeration
   [Expand]EditFormShowingEventArgs Class
   [Expand]EditFormUserControl Class
    FilterMode Enumeration
   [Expand]FilterNodeEventArgs Class
   [Expand]FilterPopupExcelParseFilterCriteriaEventArgs Class
    FilterPopupMode Enumeration
    FindMode Enumeration
   [Expand]FocusedColumnChangedEventArgs Class
    FocusedColumnChangedEventHandler Delegate
   [Expand]FocusedNodeChangedEventArgs Class
    FocusedNodeChangedEventHandler Delegate
   [Expand]GetCustomNodeCellEditEventArgs Class
    GetCustomNodeCellEditEventHandler Delegate
   [Expand]GetCustomNodeCellStyleEventArgs Class
    GetCustomNodeCellStyleEventHandler Delegate
   [Expand]GetCustomSummaryValueEventArgs Class
    GetCustomSummaryValueEventHandler Delegate
   [Expand]GetNodeDisplayValueEventArgs Class
    GetNodeDisplayValueEventHandler Delegate
   [Expand]GetPreviewTextEventArgs Class
    GetPreviewTextEventHandler Delegate
   [Expand]GetSelectImageEventArgs Class
    GetSelectImageEventHandler Delegate
   [Expand]GetStateImageEventArgs Class
    GetStateImageEventHandler Delegate
    HitInfoType Enumeration
   [Expand]InvalidNodeExceptionEventArgs Class
    InvalidNodeExceptionEventHandler Delegate
    LineStyle Enumeration
   [Expand]NodeChangedEventArgs Class
    NodeChangedEventHandler Delegate
    NodeChangeTypeEnum Enumeration
   [Expand]NodeClickEventArgs Class
    NodeClickEventHandler Delegate
   [Expand]NodeEventArgs Class
    NodeEventHandler Delegate
   [Expand]OptionsLayoutTreeList Class
   [Expand]PopupMenuShowingEventArgs Class
    PopupMenuShowingEventHandler Delegate
    ScrollVisibility Enumeration
    ShowButtonModeEnum Enumeration
    ShowFilterPanelMode Enumeration
    SummaryItemType Enumeration
   [Collapse]TreeList Class
     TreeList Members
     TreeList Constructor
    [Expand]TreeList Properties
    [Collapse]TreeList Events
      AfterCheckNode Event
      AfterCollapse Event
      AfterDragNode Event
      AfterDropNode Event
      AfterExpand Event
      AfterFocusNode Event
      BandWidthChanged Event
      BeforeCheckNode Event
      BeforeCollapse Event
      BeforeDragNode Event
      BeforeDropNode Event
      BeforeExpand Event
      BeforeFocusNode Event
      BeforeLoadLayout Event
      CalcNodeDragImageIndex Event
      CalcNodeHeight Event
      CellValueChanged Event
      CellValueChanging Event
      ClipboardNodeCopying Event
      ClipboardNodePasting Event
      ColumnButtonClick Event
      ColumnChanged Event
      ColumnFilterChanged Event
      ColumnPositionChanged Event
      ColumnUnboundExpressionChanged Event
      ColumnWidthChanged Event
      CompareNodeValues Event
      CreateCustomNode Event
      CustomColumnDisplayText Event
      CustomColumnSort Event
      CustomDrawBandHeader Event
      CustomDrawColumnHeader Event
      CustomDrawEmptyArea Event
      CustomDrawFilterPanel Event
      CustomDrawFooter Event
      CustomDrawFooterCell Event
      CustomDrawNodeButton Event
      CustomDrawNodeCell Event
      CustomDrawNodeCheckBox Event
      CustomDrawNodeImages Event
      CustomDrawNodeIndent Event
      CustomDrawNodeIndicator Event
      CustomDrawNodePreview Event
      CustomDrawRow Event
      CustomDrawRowFooter Event
      CustomDrawRowFooterCell Event
      CustomDrawScroll Event
      CustomFilterDisplayText Event
      CustomizeNewNodeFromOuterData Event
      CustomNodeCellEdit Event
      CustomNodeCellEditForEditing Event
      CustomRowFilter Event
      CustomScrollAnnotation Event
      CustomUnboundColumnData Event
      DataSourceChanged Event
      DefaultPaintHelperChanged Event
      DragCancelNode Event
      DragObjectDrop Event
      DragObjectOver Event
      DragObjectStart Event
      EditFormHidden Event
      EditFormPrepared Event
      EditFormShowing Event
      EndSorting Event
      FilterEditorCreated Event
      FilterNode Event
      FilterPopupExcelCustomizeTemplate Event
      FilterPopupExcelData Event
      FilterPopupExcelParseFilterCriteria Event
      FilterPopupExcelPrepareTemplate Event
      FilterPopupExcelQueryFilterCriteria Event
      FocusedColumnChanged Event
      FocusedNodeChanged Event
      FormatRuleExpressionEditorCreated Event
      GetCustomNodeCellEdit Event
      GetCustomNodeCellStyle Event
      GetCustomSummaryValue Event
      GetNodeDisplayValue Event
      GetPreviewText Event
      GetPrintCustomSummaryValue Event
      GetPrintPreviewText Event
      GetSelectImage Event
      GetStateImage Event
      HiddenEditor Event
      HideCustomizationForm Event
      InvalidNodeException Event
      InvalidValueException Event
      LayoutUpdated Event
      LayoutUpgrade Event
      LeftCoordChanged Event
      Load Event
      MeasurePreviewHeight Event
      NodeCellStyle Event
      NodeChanged Event
      NodesReloaded Event
      PaintEx Event
      ParseFindPanelText Event
      PopupMenuShowing Event
      PrintExportProgress Event
      QueryCustomFunctions Event
      RowCellClick Event
      RowClick Event
      RowSelectImageClick Event
      RowStateImageClick Event
      ScrollAnnotationsStyle Event
      SelectImageClick Event
      SelectionChanged Event
      ShowCustomizationForm Event
      ShowFilterPopupCheckedListBox Event
      ShowFilterPopupDate Event
      ShowFilterPopupExcel Event
      ShowFilterPopupListBox Event
      ShowingEditor Event
      ShownEditor Event
      ShowTreeListMenu Event
      StartSorting Event
      StateChanged Event
      StateImageClick Event
      SubstituteFilter Event
      TopVisibleNodeIndexChanged Event
      TreeListMenuItemClick Event
      UnboundExpressionEditorCreated Event
      ValidateNode Event
      ValidatingEditor Event
      VirtualTreeGetCellValue Event
      VirtualTreeGetChildNodes Event
      VirtualTreeSetCellValue Event
    [Expand]TreeList Methods
    TreeListAnimationType Enumeration
   [Expand]TreeListAppearanceCollection Class
    TreeListBestFitMode Enumeration
    TreeListEditingMode Enumeration
   [Expand]TreeListHitInfo Class
   [Expand]TreeListMenuEventArgs Class
    TreeListMenuEventHandler Delegate
   [Expand]TreeListMenuItemClickEventArgs Class
    TreeListMenuItemClickEventHandler Delegate
   [Expand]TreeListMultiSelection Class
   [Expand]TreeListOptionsBehavior Class
   [Expand]TreeListOptionsClipboard Class
   [Expand]TreeListOptionsCustomization Class
   [Expand]TreeListOptionsDragAndDrop Class
   [Expand]TreeListOptionsEditForm Class
   [Expand]TreeListOptionsFilter Class
   [Expand]TreeListOptionsMenu Class
   [Expand]TreeListOptionsNavigation Class
   [Expand]TreeListOptionsPrint Class
   [Expand]TreeListOptionsSelection Class
   [Expand]TreeListOptionsView Class
   [Expand]TreeListPrintAppearanceCollection Class
    TreeListState Enumeration
   [Expand]ValidateNodeEventArgs Class
    ValidateNodeEventHandler Delegate
    VirtualTreeGetCellValueEventHandler Delegate
   [Expand]VirtualTreeGetCellValueInfo Class
    VirtualTreeGetChildNodesEventHandler Delegate
   [Expand]VirtualTreeGetChildNodesInfo Class
    VirtualTreeSetCellValueEventHandler Delegate
   [Expand]VirtualTreeSetCellValueInfo Class
  [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.XtraTreeMap.Printing
  [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]Office File API
[Expand]Reporting
[Expand]Report and Dashboard Server
[Expand]Dashboard
[Expand]eXpressApp Framework
[Expand]eXpress Persistent Objects
[Expand]CodeRush
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

TreeList.CompareNodeValues Event

Enables you to implement custom sorting for columns whose TreeListColumn.SortMode property is set to Custom. For versions 17.1 and higher, the CompareNodeValues event is deprecated and replaced with the CustomColumnSort event.

Namespace:DevExpress.XtraTreeList
Assembly:DevExpress.XtraTreeList.v19.2.dll

Expanded Syntax

Expanded Event Data

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

The following CompareNodeValuesEventArgs properties provide information specific to this event.
Property Description
Column Gets the column against whose values sorting is performed.
Node1 Gets the node containing the first value involved in comparison.
Node2 Gets the node containing the second value involved in comparison.
NodeValue1 Gets the first value involved in comparison.
NodeValue2 Gets the second value involved in comparison.
Result Gets or sets a comparison result.
SortOrder Gets the sort order applied to the column whose values are going to be compared.

Expanded Remarks

In most cases, you will have no need to change the sorting algorithm provided by the control. However, there can be situations when you need to implement custom sorting. For instance, the string "Value10" is considered "less" than "Value2", so you may want to sort such kinds of data in a different manner. You may also want to sort nodes depending on their properties. For example, nodes that have children can be arranged above or below nodes that don't have children.

To use a custom sorting algorithm for a column, set the column's TreeListColumn.SortMode property to Custom and handle the CompareNodeValues event to implement custom sorting logic. The event's functionality is based upon comparing all nodes in pairs. Thus, this event allows you to specify which node must be positioned above or below another node when sorting is applied.

Parameters transmitted to the CompareNodeValues event specify the column against which sorting is about to be performed and the sort order applied. Furthermore, values to be compared (together with nodes containing them) are also passed to the event. The result of the comparison must be specified using the CompareNodeValuesEventArgs.Result parameter.

Expanded Example

The code below implements a custom sorting algorithm for a Tree List column via the CustomColumnSort event. The sorting procedure arranges nodes that have children above the nodes that do not have children.

The images below display the control sorted by the Department column in ascending and descending order. Notice that the Finance node is always located under nodes that have children.

Expanded See Also

Is this topic helpful?​​​​​​​