簡體   English   中英

C# DataGridView 列順序

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM