[英]How to disable sort in DataGridView?
如何禁用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;
}
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);
}
注意:您甚至不能以編程方式對任何列進行排序。
為了像這樣擴展控件功能,我喜歡使用擴展方法,以便可以輕松地重用它。 這是一個入門擴展文件,其中包含一個用於禁用數據網格視圖排序的擴展。
要使用它,只需將它包含在您的項目中並像這樣調用
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
我正在尋找一種方法來禁用我已經存在的DataGridView
並遇到了幾個答案。 奇怪的是,谷歌上的前幾個結果是一些非常古老的話題。 這是其中最早的一個,我決定把我的答案放在這里。
private void dgvDetails_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
{
e.Column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
在屬性窗口點擊ColumStateChanged
時的描述是:
“當列改變狀態時發生,例如獲得或失去焦點”
當然有很多方法可以做到這一點,但我想我會在這里添加這個。 不能說我在其他地方找到了它,但話又說回來,我只閱讀了我找到的前 5 個主題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.