【发布时间】:2011-04-15 19:29:39
【问题描述】:
我以编程方式将列添加到 DataGridView,然后绑定到列表。默认情况下,列的 SortMode 为 Automatic。但是当我运行我的应用程序时,单击标题没有任何作用。向上/向下箭头未显示。从阅读MSDN来看,关于自动排序的说法不多。他们更详细地介绍了程序化排序。所以,我假设自动方式应该很容易。 MSDN 继续说“除非列标题用于选择,否则单击列标题会自动按此列对 DataGridView 进行排序,并显示一个指示排序顺序的字形。”这到底是什么意思呢?我可以设置与排序冲突的网格属性吗?我错过了什么?
AutoGenerateColumns = false;
AllowUserToAddRows = false;
AllowUserToDeleteRows = false;
AllowUserToResizeRows = false;
AllowUserToResizeColumns = false;
ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
ReadOnly = true;
MultiSelect = false;
RowHeadersVisible = false;
SelectionMode = DataGridViewSelectionMode.FullRowSelect;
CellBorderStyle = DataGridViewCellBorderStyle.None;
DataGridViewTextBoxColumn idColumn = new DataGridViewTextBoxColumn();
idColumn.HeaderText = "ID";
idColumn.DataPropertyName = "IDNumber";
DataGridViewTextBoxColumn nameColumn = new DataGridViewTextBoxColumn();
nameColumn.HeaderText = "Name";
nameColumn.DataPropertyName = "Description";
DataGridViewTextBoxColumn lastModifiedColumn = new DataGridViewTextBoxColumn();
lastModifiedColumn.HeaderText = "Last Modified";
lastModifiedColumn.DataPropertyName = "Date";
Columns.Add(idColumn);
Columns.Add(nameColumn);
Columns.Add(lastModifiedColumn);
List<IMyObject> bindingList = GetMyList();
DataSource = bindingList;
【问题讨论】:
-
他们所说的字形是列标题中的向上/向下箭头。尝试注释掉所有非默认网格设置,看看它们是否与排序冲突。
-
我也有同样的问题。该文档让人认为它应该自动工作。
-
我也是! :) 坦率地说,IMO 甚至没有基本的基于 IComparable 的开箱即用排序的网格是不完整的。
-
此处记录了另一种解决方案:stackoverflow.com/a/28520948/3317709.
标签: c# sorting datagridview