C# 添加前根据特定列对DataGridView进行排序

C# 添加前根据特定列对DataGridView进行排序,c#,datagridview,C#,Datagridview,我有DataGridView通过DataTable 此项从XML文件中读取,并在该XML文件中, 那些未排序且我想排序的项目在添加到我的DataGridView private void UpdateDataGdirView(List<Vendor> list) { DataTable dt = new DataTable(); dt.Columns.Add("Column1", System.Type.GetType("System.Boolean"));

我有
DataGridView
通过
DataTable
此项从XML文件中读取,并在该XML文件中, 那些未排序且我想排序的项目在添加到我的
DataGridView

private void UpdateDataGdirView(List<Vendor> list)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Column1", System.Type.GetType("System.Boolean"));
    dt.Columns.Add("Column2", typeof(string));
    dt.Columns.Add("Column3", System.Type.GetType("System.Boolean"));
    dt.Columns.Add("Column4", System.Type.GetType("System.Boolean"));
    dt.Columns.Add("Column5", System.Type.GetType("System.Boolean"));
    dt.Columns.Add("Column6", System.Type.GetType("System.Boolean"));
    DataRow dr;

    foreach (Vendor vendor in list)
    {
        dr = dt.NewRow();
        dr["Column1"] = vendor.IsVendorChecked;
        dr["Column2"] = vendor.Number;
        dr["Column3"] = vendor.Name;
        dr["Column4"] = vendor.Size;
        dr["Column5"] = vendor.Path;
        dr["Column6"] = vendor.Path2;
        dt.Rows.Add(dr);
    }

    dataGridView1.AllowUserToAddRows = false;
    dataGridView1.AllowUserToDeleteRows = false;
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
    this.Invoke((MethodInvoker)delegate { dataGridView1.DataSource = dt; });
}
private void updateDataTagDirView(列表)
{
DataTable dt=新的DataTable();
Add(“Column1”,System.Type.GetType(“System.Boolean”);
dt.Columns.Add(“Column2”,typeof(string));
Add(“Column3”,System.Type.GetType(“System.Boolean”);
Add(“Column4”,System.Type.GetType(“System.Boolean”);
Add(“Column5”,System.Type.GetType(“System.Boolean”);
Add(“Column6”,System.Type.GetType(“System.Boolean”);
数据行dr;
foreach(列表中的供应商)
{
dr=dt.NewRow();
dr[“Column1”]=vendor.isvendor已检查;
dr[“Column2”]=供应商编号;
dr[“Column3”]=供应商名称;
dr[“Column4”]=供应商的尺寸;
dr[“Column5”]=供应商路径;
dr[“Column6”]=vendor.Path2;
dt.Rows.Add(dr);
}
dataGridView1.AllowUserToAddress=false;
dataGridView1.AllowUserToDeleteRows=false;
dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;
Invoke((MethodInvoker)委托{dataGridView1.DataSource=dt;});
}

我认为您应该使用DataView进行此操作。比如:


我认为您应该使用DataView进行此操作。比如:


我认为您应该使用DataView进行此操作。比如:


我认为您应该使用DataView进行此操作。比如:

你可以用 dt.defaultview.sort=“columnname asc/desc” 然后将数据表绑定到其目标。

您可以使用 dt.defaultview.sort=“columnname asc/desc” 然后将数据表绑定到其目标。

您可以使用 dt.defaultview.sort=“columnname asc/desc” 然后将数据表绑定到其目标。

您可以使用 dt.defaultview.sort=“columnname asc/desc”
然后将数据表绑定到其目标。

SalesOrderHeader和TotalDue是什么意思?这只是一个示例,请按照我发布的链接进行操作。顺便说一句,“SalesOrderHeader”是数据集中的表名,“TotalDue”是“SalesOrderHeader”表的列名。“SalesOrderHeader”和“TotalDue”是什么意思?这只是一个示例,请遵循我发布的链接。顺便说一句,“SalesOrderHeader”是数据集中的表名,“TotalDue”是“SalesOrderHeader”表的列名。“SalesOrderHeader”和“TotalDue”是什么意思?这只是一个示例,请遵循我发布的链接。顺便说一句,“SalesOrderHeader”是数据集中的表名,“TotalDue”是“SalesOrderHeader”的列名表。“SalesOrderHeader”和“TotalDue”是什么意思?这只是一个示例,请遵循我发布的链接。顺便说一句,“SalesOrderHeader”是数据集中的表名,“TotalDue”是“SalesOrderHeader”表的列名。
        DataTable orders = dataSet.Tables["SalesOrderHeader"];

        EnumerableRowCollection<DataRow> query =
            from order in orders.AsEnumerable()
            orderby order.Field<decimal>("TotalDue")
            select order;

        DataView view = query.AsDataView();

        bindingSource1.DataSource = view;
        DataTable orders = dataSet.Tables["SalesOrderHeader"];
        DataView dv = new DataView(orders);
        dv.Sort = "TotalDue";
        dataGridView1.DataSource = dv;