[英]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.