如何实现DataGridView的自动排序?

2024-05-23

我以编程方式将列添加到 DataGridView,然后绑定到列表。默认情况下,列的排序模式为自动。但是当我运行我的应用程序时,单击标题没有任何反应。向上/向下箭头未显示。从看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;

We use 绑定列表视图 http://blw.sourceforge.net/将 List 绑定到 DataGridViews,它对我们来说效果很好。

下面是创建对象列表视图的一个非常简单的示例(在 C# 中):

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

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

如果你不想添加那么重的东西,你可以尝试这个实现可排序绑定列表 http://www.timvw.be/presenting-the-sortablebindinglistt/ (有更新 http://www.timvw.be/2008/08/02/presenting-the-sortablebindinglistt-take-two/).

两者都可以让您开箱即用地进行排序,根据基准测试,BindingListView 甚至比 DataView 更快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现DataGridView的自动排序? 的相关文章

随机推荐