我使用
填充我的datagridviewdataGridView1.DataSource = ListOfClasses
这可以很好地填补所有内容。现在我想让列可以排序。即使我尝试的两列都是长条和一根字符串,它们似乎并不排序。我尝试在数据源之后运行它(之前给出了一个例外,因为列不存在)
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
dataGridView1.Columns[column.Name].SortMode = DataGridViewColumnSortMode.Automatic;
}
我最初可以使用sql中的order来对它们进行排序,但是我仍然喜欢用列选择灵活性。我该如何启用
答案 0 :(得分: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/
答案 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);
}
}