以编程方式重新排序datagridview中的行

时间:2016-06-23 01:00:40

标签: c# asp.net datagridview

所以我有这样的事情:

List<Customer> customers;
customers = Customer.databaseproc(parameters);
//databaseproc() is implemented using a data reader and I know it works.
DataGridView dgv;
dgv.DataSource = customers;

这不是确切的问题,但我认为首先提供一些背景可能很重要。如果我需要提供更多/更清晰的细节,我很乐意这样做,但在这一点上,我对SqlConnection的东西以及Windows窗体都很陌生。

问题是:如果我尝试实现自定义排序(在运行时由用户确定的字段上),有没有办法让我(在上面的代码已经执行并且gridview可见之后) )以编程方式更改行的顺序以反映排序中的这些选择?

2 个答案:

答案 0 :(得分:1)

CustomerNameCustomer类中的一个属性,您希望根据CustomerName对List进行排序(或者让它成为类中的任何其他属性)。然后,您可以对List进行排序,然后再次分配DataSource(就像@Plutonix的注释一样)。它会是这样的:

customers =customers.OrderBy(x => x.CustomerName).ToList(); // Sort the list
dgv.DataSource=customers ; // Re-assign the datasource

答案 1 :(得分:1)

如果要求是任何随机订单,我会这样做。

Random r = new Random();
customers =customers.OrderBy(x => r.Next(0,r.customers.Count())) // random order.
                    .ToList(); 
dgv.DataSource=customers ;                                       // Set new DataSource.

或者,您也可以使用Guid随机化您的列表。

customers =customers.OrderBy(x => Guid.NewGuid()) // random order.

选中此Usage Demo