GridControlBase.CustomGroupDisplayText Event
Enables you to provide custom content for group rows.
Namespace: DevExpress.UI.Xaml.Grid
Assembly: DevExpress.UI.Xaml.Grid.v21.2.dll
NuGet Package: DevExpress.Uwp.Controls
Declaration
Event Data
The CustomGroupDisplayText event's data class is DevExpress.UI.Xaml.Grid.CustomGroupDisplayTextEventArgs.
Remarks
You can group rows using custom rules by handling the GridControl.CustomColumnGroup event. In this instance, it may be useful to replace the default text displayed within group rows. To do this, handle the CustomGroupDisplayText event. The event arguments allow you to easily identify group rows and replace their display text.
Example
This example shows how to group rows using custom rules. When grouping by the 'Unit Price' column, the rows in this column that have values between 0 and 10 should be combined into a single group. Rows whose values fall between 10 and 20 should be combined into another group, etc.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:HowToCustomGrouping"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Grid="using:DevExpress.UI.Xaml.Grid"
x:Class="HowToCustomGrouping.MainPage"
mc:Ignorable="d">
<Grid>
<Grid:GridControl Name="grid" CustomColumnGroup="GridControl_CustomColumnGroup" CustomGroupDisplayText="GridControl_CustomGroupDisplayText" Background="Black" Foreground="White" >
<Grid:GridControl.Columns>
<Grid:GridTextColumn FieldName="ProductName" />
<Grid:GridTextColumn FieldName="Supplier" />
<Grid:GridTextColumn FieldName="UnitPrice" SortMode="Custom"/>
<Grid:GridTextColumn FieldName="Quantity" />
</Grid:GridControl.Columns>
</Grid:GridControl>
</Grid>
</Page>
using System;
using System.Collections.Generic;
using Windows.UI.Xaml.Controls;
namespace HowToCustomGrouping
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
grid.ItemsSource = new ProductList();
grid.Columns["UnitPrice"].GroupIndex = 0;
}
private void GridControl_CustomColumnGroup(object sender, DevExpress.UI.Xaml.Grid.CustomColumnSortEventArgs e) {
if (e.Column.FieldName == "UnitPrice") {
double x = Math.Floor(Convert.ToDouble(e.Value1) / 10);
double y = Math.Floor(Convert.ToDouble(e.Value2) / 10);
int res = Comparer<double>.Default.Compare(x,y);
if (x > 9 && y > 9) res = 0;
e.Result = res;
e.Handled = true;
}
}
private void GridControl_CustomGroupDisplayText(object sender, DevExpress.UI.Xaml.Grid.CustomGroupDisplayTextEventArgs e) {
if (e.Column.FieldName != "UnitPrice") return;
string interval = IntervalByValue(e.Value);
e.DisplayText = interval;
}
private string IntervalByValue(object val) {
double d = Math.Floor(Convert.ToDouble(val) / 10);
string ret = string.Format("{0:c} - {1:c} ", d * 10, (d + 1) * 10);
if (d > 9) ret = string.Format(">= {0:c} ", 100);
return ret;
}
}
}