DataGridView
でソートを無効にするにはどうすればよいですか?ヘッダーDataGridView
ソートを無効にする必要があります。
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
LINQを使用します。
Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
静的に列をソートできないようにする場合。この方法でできます
とても簡単です:
foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
ColumnAddedイベントで無効にできます:
private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
このような制御機能を拡張するには、拡張メソッドを使用して簡単に再利用できるようにします。これは、datagridviewでの並べ替えを無効にする拡張機能を含むスターター拡張機能ファイルです。
使用するには、プロジェクトに含めて、次のように呼び出します
myDatagridView.DisableSorting()
私の場合、並べ替えを無効にしたいDataGridViewのDataBindingCompleteイベントハンドラにこのコード行を追加しました
Imports System.ComponentModel
Imports System.Reflection
Imports System.Runtime.CompilerServices
Imports System.Windows.Forms
Public Module Extensions
<Extension()>
Public Sub DisableSorting(datagrid As DataGridView)
For index = 0 To datagrid.Columns.Count - 1
datagrid.Columns(index).SortMode = DataGridViewColumnSortMode.NotSortable
Next
End Sub
End Module
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
DataGridViewを拡張できる場合は、Sort
メソッドを空のメソッドでオーバーライドできます。これにより、DataGridViewの並べ替えが完全に無効になります。
public override void Sort(DataGridViewColumn dataGridViewColumn, ListSortDirection direction)
{
//base.Sort(dataGridViewColumn, direction);
}
注:プログラムで列をソートすることもできません。