web-dev-qa-db-ja.com

DataGridViewでソートを無効にする方法は?

DataGridViewでソートを無効にするにはどうすればよいですか?ヘッダーDataGridViewソートを無効にする必要があります。

53
Gold
foreach (DataGridViewColumn column in dataGridView.Columns)
{
    column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
67
hunter

LINQを使用します。

Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
16
Co. Aden

静的に列をソートできないようにする場合。この方法でできます

  1. DataGridViewコントロールのEditColumnsウィンドウを開きます。
  2. 左側のペインでソート不可にする列を選択します。
  3. 右側のプロパティペインで、[並べ替えモード]プロパティを選択し、[並べ替え不可]を選択します。
16

とても簡単です:

foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
    dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
4
Dara.Joukar

ColumnAddedイベントで無効にできます:

private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
    dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
0
Deepak

このような制御機能を拡張するには、拡張メソッドを使用して簡単に再利用できるようにします。これは、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
0
Scope Creep
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
      for (int i = 0; i < dataGridView1.Columns.Count; i++)
      {
           dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
      }
}
0
Fatih Gurbuz

DataGridViewを拡張できる場合は、Sortメソッドを空のメソッドでオーバーライドできます。これにより、DataGridViewの並べ替えが完全に無効になります。

public override void Sort(DataGridViewColumn dataGridViewColumn, ListSortDirection direction)
{
    //base.Sort(dataGridViewColumn, direction);
}

注:プログラムで列をソートすることもできません。

0
bansi