[英]C# DataGridView Column Order
在我的应用程序中,我有一个 DataGridView,它的数据源因您单击的按钮而异。 EG 单击“总下载量”将是:
dataGridView1.DataSource = totalDownloads();
或者每个玩家的下载量
dataGridView1.DataSource = playerDownloads();
每个方法通过 SQL 查询获取数据并返回该信息的数据表。
但是,使用我的以下代码:
dataGridView1.DataSource=getStats();
public DataTable getStats()
{
DataTable table1 = new DataTable("Totals");
table1.Columns.Add("Park Name");
table1.Columns.Add("Author");
table1.Columns.Add("Total Downloads");
table1.Columns[2].DataType = typeof(int);
table1.Columns.Add("Rating (Max 5)");
table1.Columns[3].DataType = typeof(float);
table1.Rows.Add(name,author,download, rating);
}
return table1;
}
我希望看到的列的顺序是:“公园名称”“作者”“总下载量”“评级”但是,它们出现在“下载”、“公园名称”、“作者”、“评级”中
我读过添加:dataGridView1.AutoGenerateColumns = false; 将解决这个问题......但是,这对订单没有任何影响......
谢谢您的帮助!
这是一个 WinForms 项目还是一个 Asp.net 项目?
如果它是 winforms,您应该能够通过访问您的 GridViews Columns DisplayIndex 来更改列的显示顺序
dataGridView1.Columns["Park Name"].DisplayIndex = 0; // or 1, 2, 3 etc
我对列乱序的简单解决方案是添加此循环,将DisplayIndex
设置为Index
。
foreach (DataGridViewColumn col in grid.Columns) {
col.DisplayIndex = col.Index;
}
Index
在添加时分配给每列。 我不确定为什么DisplayIndex
会出现乱序,但上面的脚本会修复它。
这可能与单行一样有效:
grid.Columns.foreach(c => c.DisplayIndex = c.Index);
对我来说,这不是诀窍。 还需要一行:
entityDataGridView.AutoGenerateColumns = false;
问候!
尝试像这样使用显示索引
private void AdjustColumnOrder()
{
customersDataGridView.Columns["Park Name"].DisplayIndex = 0;
customersDataGridView.Columns["Author"].DisplayIndex = 1;
customersDataGridView.Columns["Total Downloads"].DisplayIndex = 2;
}
我有同样的问题。 我解决了:
dataGridView.DataSource = null;
dataGridView.DataSource = MyDataTable;
我发现这非常有帮助。
用法: ColumnDisplayOrder("Park Name, Author, Total Downloads", myDataGridView);
private void ColumnDisplayOrder(string columnList, DataGridView gridView)
{
var columnListArray = columnList.Split(',');
for (var i = 0; i < columnListArray.Length; i++)
{
var gridViewColumn = gridView.Columns[columnListArray[i].Trim()];
if (gridViewColumn != null)
gridViewColumn.DisplayIndex = i;
}
}
我遇到了同样的问题并找到了原因。 这是由于类属性的顺序:
public string Downloads { get; set; }
public string ParkName { get; set; }
public string Author { get; set; }
public float Rating { get; set; }
为您提供下载、公园名称、作者、评级
如果你重新排列它们,顺序应该和你期望的一样。
我在数据网格中的列顺序有同样的问题,在我的项目数据源是对象列表,通过设计器我按正确的顺序添加了列,但是当我开始应用程序时,顺序是混合的。 当我从类中添加对我的属性的绑定时,我注意到我的属性在数据网格中的列顺序是错误的,所以我以与添加列相同的顺序在类中添加属性,即使AutoGenerateColumns设置为真的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.