在C#中对dataGridView列进行排序?(Windows窗体)

在C#中对dataGridView列进行排序?(Windows窗体),c#,winforms,datagridview,sorting,grid,C#,Winforms,Datagridview,Sorting,Grid,我有一个从sql表绑定的datagridview,在该dv中我有以下属性:Id、名称和价格。当我将名称列的SortMode设置为Automatic并单击此列的标题时,我可以根据名称的第一个字母对此dv进行排序,这样我可以根据其第一个字母订购产品(Acumulator、Boat、CocaCola、Engine等) 有没有一种方法可以在不单击列名标题的情况下发生这种情况。我正在寻找一些代码,将完成这项工作时,表单将加载 使用Datatable.Default.Sort属性,然后将其绑定到datagr

我有一个从sql表绑定的datagridview,在该dv中我有以下属性:Id、名称和价格。当我将名称列的SortMode设置为Automatic并单击此列的标题时,我可以根据名称的第一个字母对此dv进行排序,这样我可以根据其第一个字母订购产品(Acumulator、Boat、CocaCola、Engine等)


有没有一种方法可以在不单击列名标题的情况下发生这种情况。我正在寻找一些代码,将完成这项工作时,表单将加载

使用
Datatable.Default.Sort
属性,然后将其绑定到datagridview。

您可以通过对返回的数据进行排序来控制从SQL数据库返回的数据:

orderby [Name]
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending);

如果从应用程序执行SQL查询,请对返回的数据排序。例如,创建一个调用过程或执行SQL的函数,并为其提供一个获取orderby条件的参数。因为如果您对从数据库返回的数据进行排序,它将消耗时间,但会对其进行排序,因为它是按照您所说的那样执行的,而不是从UI执行的,您希望在运行时对其进行排序,所以在执行SQL查询时对其进行排序。

DataGridView上有一个称为“排序”的方法:

这将以编程方式对datagridview进行排序。

这一个更简单:)

dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending);

最好的方法是在绑定数据源之前对列表进行排序

cars=cars.OrderBy(o=>o.year).ThenBy(o=>o.color.ToList();
adgCars.DataSource=cars;


对不起,我的英语不好。

我正在自动绑定datagridview,我不使用查询。有没有办法访问数据源的查询并更正此问题?我的意思是,查询数据库并返回数据的SQL语句在过程u中添加语法orderby,或者在DAL层的SQL语句中添加语法orderby,这与排序所消耗的时间有关,他希望在负载中排序,那么在不在绑定后执行SQL语句!我认为它将消耗更多的时间是的,Ahmy是对的,因为它可能更好地在数据库端进行排序。因此,如果您使用SQL直接与DB交互,请在查询的末尾附加order by。我只是在回答这个问题。这是在代码中对DGV进行排序的方法。好的,如果Axeladini需要它,那么没关系,但我从他的问题中了解到,他在UI中不需要它,所以我想节省时间。我很高兴Axeladini找到了解决方案,这是我们希望从我们的答案中得到的答案。您的解决方案没问题,但正如我告诉您的,我正在从UI填充这个网格,我不是用c#编码的。顺便说一句,如果我们用代码完成所有这些工作,您的解决方案就可以工作了。我试过了,但我需要的是免费的答案。感谢所有试图回答这个问题的人。答案是:this.dataGridView1.Sort(this.dataGridView1.Columns[“Name”]、ListSortDirection.Ascending);我同意使用数字索引比使用字符串索引更好,因为如果将来更改列名,也必须更改字符串索引。
dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview;
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC";
this.datagridview.datasource = dataview1;