1

我使用填充我的datagridview

dataGridView1.DataSource = ListOfClasses

这会正确填写所有内容。现在我喜欢使列可排序。即使我尝试的两列是长字符串和字符串,它们似乎也没有排序。我尝试在数据源之后运行它(之前给了我一个异常,因为列不存在)

foreach (DataGridViewColumn column in dataGridView1.Columns)
            {
                dataGridView1.Columns[column.Name].SortMode = DataGridViewColumnSortMode.Automatic;
            }

我最初可以使用 sql 中的 order by 对它们进行排序,但是我仍然喜欢使用列选择的灵活性。我如何启用它

4

3 回答 3

0
    void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {

        if (dataGridView1.SortOrder.ToString() == "Ascending") // Check if sorting is Ascending
        {
            dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name], ListSortDirection.Descending);
        }
        else
        {
            dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name], ListSortDirection.Ascending);
        }
    }
于 2015-01-30T13:43:24.070 回答
0

您是否尝试过类似实现可排序的 BindingLis 的想法

这是有关如何执行此操作的教程

http://www.codeproject.com/Articles/31418/Implementing-a-Sortable-BindingList-Very-Very-Quic

http://www.timvw.be/2007/02/22/presenting-the-sortablebindinglistt/

于 2012-11-27T21:50:52.090 回答
0

您的数据源应该是一个 IBindingList。

如果你使用 VS 2010 及更高版本和 EF,你有方法“.ToBindingList();” 哪个为你做。

前任:

dbContext.YourEntitycollection.Load();
yourBindingSource.DataSource = dbContext.YourEntitycollection.Local.ToBindingList();

像这样,您的 DataGrid 中的排序会自动启用。

有关详细信息,请参阅:http: //msdn.microsoft.com/en-us/data/jj682076.aspx

于 2014-06-16T12:24:58.633 回答