[英]WPF Datagrid: Clear column sorting
我在我的應用程序中使用WPF Datagrid,可以通過單擊標題對列進行排序。
我想知道是否有任何方法可以以編程方式清除列的排序?
我嘗試對列進行排序,然后清除MyDataGrid.Items.SortDescriptions
,但該集合為空(即使已對一列進行了排序)。
我也嘗試過:
MyDataGridColumn.SortDirection = null;
問題是列指示消失了,但是在編輯單元格和切換行時仍然會發生排序。
有沒有辦法清除列的排序?
編輯(為清晰起見):問題是,如果用戶重新點擊相同的列標題,我想再次允許排序,因此將CanUserSort設置為false會有問題,即使它是在XAML中完成的。 簡而言之,我正在嘗試做的是,一旦已排序的列具有已修改的單元格,就會阻止對行進行排序。 我想強制用戶重新點擊標題。
這是你需要的:
using System.Windows.Data;
using System.ComponentModel;
ICollectionView view = CollectionViewSource.GetDefaultView(grid.ItemsSource);
if (view != null)
{
view.SortDescriptions.Clear();
foreach (DataGridColumn column in grid.Columns)
{
column.SortDirection = null;
}
}
原始來源: https : //stackoverflow.com/a/9533076/964053
我想知道的是M $想要不放置ClearSort()方法...
為所有列設置CanUserSort
為false
-
foreach (var a in MyDataGrid.Columns)
{
a.CanUserSort = false;
}
作為延伸......
public static void ClearSort(this DataGrid grid)
{
var view = CollectionViewSource.GetDefaultView(grid.ItemsSource);
view?.SortDescriptions.Clear();
foreach (var column in grid.Columns)
{
column.SortDirection = null;
}
}
在XAML中,您可以使用此代碼將其關閉。
<DataGridTextColumn Header="Header Name" CanUserSort="False"/>
這是我在我的程序中使用的(我有一個RESET按鈕並使用它來清除數據網格上的排序)。
System.Windows.Data.CollectionViewSource.GetDefaultView(MY_DATA_GRID.ItemsSource).SortDescriptions.Clear();
奇跡般有效。
干杯,Iato
在DataGrid的XAML代碼中,您可以添加CanUserSortColumns =“False”。 然后noboady可以在朗姆酒時對任何專欄進行排序。
這是一個禁用DataGridView
排序的小代碼片段。
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.