public partial class MainPage : ContentPage
{
Syncfusion.Data.ListSortDirection sortDirection;
public MainPage()
{
InitializeComponent();
dataGrid.SortColumnsChanging += DataGrid_SortColumnsChanging;
}
private void DataGrid_SortColumnsChanging(object sender, DataGridSortColumnsChangingEventArgs e)
{
sortDirection = e.AddedItems[0].SortDirection;
var column = (sender as SfDataGrid).Columns.FirstOrDefault(x => x.MappingName == e.AddedItems[0].ColumnName);
if (column == null)
return;
if (column.HeaderTemplate != null)
column.HeaderTemplate = null;
if (sortDirection == Syncfusion.Data.ListSortDirection.Ascending)
{
column.HeaderTemplate = new DataTemplate(() =>
{
var grid = new Grid();
grid.BackgroundColor = Color.Green;
var headerTitle = new Label() { Text = column.HeaderText };
grid.Children.Add(headerTitle);
return grid;
});
}
else
{
column.HeaderTemplate = new DataTemplate(() =>
{
var grid = new Grid();
grid.BackgroundColor = Color.RoyalBlue;
var headerTitle = new Label() { Text = column.HeaderText };
grid.Children.Add(headerTitle);
return grid;
});
}
}
} |
private void DataGrid_SortColumnsChanging(object sender, DataGridSortColumnsChangingEventArgs e)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add || e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Replace)
{
sortDirection = e.AddedItems[0].SortDirection;
var column = (sender as SfDataGrid).Columns.FirstOrDefault(x => x.MappingName == e.AddedItems[0].ColumnName);
if (column == null)
return;
foreach(var allColumn in (sender as SfDataGrid).Columns)
{
if(allColumn != column)
allColumn.HeaderTemplate = column.HeaderTemplate = new DataTemplate(() =>
{
var stack = new StackLayout();
var headerTitle = new Label() { Text = allColumn.HeaderText, HeightRequest = 50, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center };
headerTitle.TextColor = Color.Black;
var boxView = new BoxView() { HeightRequest = 2 };
boxView.Color = Color.Transparent;
stack.Children.Add(headerTitle);
stack.Children.Add(boxView);
return stack;
});
else
{
if (column.HeaderTemplate != null)
column.HeaderTemplate = null;
}
}
if (sortDirection == Syncfusion.Data.ListSortDirection.Ascending)
{
column.HeaderTemplate = new DataTemplate(() =>
{
var stack = new StackLayout();
var headerTitle = new Label() { Text = column.HeaderText, HeightRequest = 50, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center };
headerTitle.TextColor = Color.Blue;
var boxView = new BoxView() { HeightRequest = 2 };
boxView.Color = Color.Blue;
stack.Children.Add(headerTitle);
stack.Children.Add(boxView);
return stack;
});
}
else
{
column.HeaderTemplate = new DataTemplate(() =>
{
var stack = new StackLayout();
var headerTitle = new Label() { Text = column.HeaderText, HeightRequest = 50, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center };
headerTitle.TextColor = Color.Green;
var boxView = new BoxView() { HeightRequest = 2 };
boxView.Color = Color.Green;
stack.Children.Add(headerTitle);
stack.Children.Add(boxView);
return stack;
});
}
}
else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
{
var column = (sender as SfDataGrid).Columns.FirstOrDefault(x => x.MappingName == e.RemovedItems[0].ColumnName);
if (column == null)
return;
if (column.HeaderTemplate != null)
column.HeaderTemplate = null;
column.HeaderTemplate = new DataTemplate(() =>
{
var stack = new StackLayout();
var headerTitle = new Label() { Text = column.HeaderText, HeightRequest = 50, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center };
headerTitle.TextColor = Color.Black;
var boxView = new BoxView() { HeightRequest = 2 };
boxView.Color = Color.Transparent;
stack.Children.Add(headerTitle);
stack.Children.Add(boxView);
return stack;
});
}
} |