Ana*_*nth 28 .net c# datagridview winforms
我需要禁用列标题排序DataGridView.
我们可以通过设置各列的属性来实现
BalancesGridView.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,那么我将不得不遍历所有列.
有没有更好的办法 ?
VVS*_*VVS 13
这有什么不好的?如果你不喜欢循环列或者有多个DataGridView,你可以为此编写一个扩展方法:
public static class DatatGridViewExtensions
{
public static void SetColumnSortMode(this DataGridView dataGridView, DataGridViewColumnSortMode sortMode)
{
foreach (var column in dataGridView.Columns)
{
column.SortMode = sortMode;
}
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
BalancesGridView.SetColumnSortMode(DataGridViewColumnSortMode.NotSortable);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么没有人建议你Linq这样做的方式:
BalancesGridView.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
Run Code Online (Sandbox Code Playgroud)
我说循环列并不是一个很好的答案,特别是如果您的数据源不时发生变化。ColumnAdded 事件中的一行代码就可以解决这个问题:
e.Column.SortMode = DataGridViewColumnSortMode.NotSortable
Run Code Online (Sandbox Code Playgroud)