如何在DataGridView
中禁用排序?我需要禁用标题DataGridView
排序。
答案 0 :(得分:65)
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
答案 1 :(得分:16)
如果要静态使列不可排序。你可以这样做
答案 2 :(得分:15)
使用LINQ:
Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
答案 3 :(得分:4)
非常简单:
foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
答案 4 :(得分:0)
您可以在ColumnAdded事件中禁用它:
private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
答案 5 :(得分:0)
如果您可以扩展DataGridView,则可以使用空的方法覆盖Sort
方法。这将完全禁用DataGridView的排序。
public override void Sort(DataGridViewColumn dataGridViewColumn, ListSortDirection direction)
{
//base.Sort(dataGridViewColumn, direction);
}
注意:您甚至无法以编程方式对任何列进行排序。
答案 6 :(得分:0)
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
答案 7 :(得分:0)
对于扩展这样的控制功能,我喜欢使用扩展方法,以便可以轻松地重用它。这是一个入门扩展文件,其中包含一个扩展名,以禁用对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
答案 8 :(得分:0)
我一直在寻找一种方法来禁用我已经存在的DataGridView
并遇到几个答案。奇怪的是,谷歌的前几个结果是一些非常古老的话题。这是最早的一个,我决定将答案放在这里。
private void dgvDetails_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
{
e.Column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
在属性窗口中单击ColumStateChanged
时的描述是:
“当列更改状态(例如获得或失去焦点)时发生”
尽管有很多方法可以做到这一点,但我想我将在这里添加它。不能说我在其他任何地方都找到了它,但是再说一次,我只读了发现的前5个主题。