使datagridview中的列可排序?

时间:2012-11-27 21:44:34

标签: c# winforms datagridview

我使用

填充我的datagridview
dataGridView1.DataSource = ListOfClasses

这可以很好地填补所有内容。现在我想让列可以排序。即使我尝试的两列都是长条和一根字符串,它们似乎并不排序。我尝试在数据源之后运行它(之前给出了一个例外,因为列不存在)

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

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

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分: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

答案 2 :(得分: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);
        }
    }