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;