c# - 如何实现DataGridView的自动排序?

标签 c# sorting datagridview

我正在以编程方式将列添加到 DataGridView,然后绑定(bind)到列表。默认情况下,列的 SortMode 是自动的。但是当我运行我的应用程序时,点击标题什么都不做。向上/向下箭头未显示。从看了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;

最佳答案

我们使用 BindingListView将 List 绑定(bind)到 DataGridView,这对我们来说效果很好。

Here is a very simple example of creating a view of a list of objects (in C#):

List<Customer> customers = GetCustomers();
BindingListView<Customer> view = new BindingListView<Customer>(customers);
dataGridView1.DataSource = view;

查看 https://stackoverflow.com/a/17952576/116891有关 DGV 排序和数据绑定(bind)的更多详细信息。

如果你不想添加那么重的东西,你可以试试这个 SortableBindingList<T> 的实现(with updates)。

根据它们的基准,两者都可以让您直接进行排序,而且 BindingListView 甚至比 DataViews 更快。

关于c# - 如何实现DataGridView的自动排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770857/

相关文章:

c# - 从子窗体更新数据库后刷新 datagridview win 窗体

c# - 将数据从 C++ 传递到 C# 的最有效方法

c# - 如何计算字典中唯一值的出现次数?

C# 数据表 Entity Framework

python - 对嵌套列表进行排序 : Exclude first item from sorting

php - 对 laravel 关系集合的自定义排序

winforms - 在选择更改时直接应用和验证绑定(bind)的 DataGridViewComboBoxCell

c# - 在运行时同时加载两个场景

XSLT 自定义排序

c# - 如何将数据从 texboxes 插入到 datagridview?