C#DataGridView列顺序

use*_*290 9 c#

在我的应用程序中,我有一个DataGridView,它的数据源因你点击的按钮而异.EG点击"总下载量",它将是:

dataGridView1.DataSource = totalDownloads();
Run Code Online (Sandbox Code Playgroud)

或者每位玩家的下载量

dataGridView1.DataSource = playerDownloads();
Run Code Online (Sandbox Code Playgroud)

每种方法都通过SQL查询获取数据并返回此信息的dataTable.

但是,使用以下代码:

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;
    }
Run Code Online (Sandbox Code Playgroud)

我希望看到顺序中的列:"公园名称""作者""总下载""评级"然而,他们进入"下载","公园名称","作者","评级"

我读过添加:dataGridView1.AutoGenerateColumns = false; 将解决这个问题......然而,这对订单没有任何影响......

谢谢您的帮助!

Mik*_*use 16

这是WinForms项目还是Asp.net项目?

如果是winforms,您应该能够通过访问GridViews列DisplayIndex来更改列的显示顺序

    dataGridView1.Columns["Park Name"].DisplayIndex = 0; // or 1, 2, 3 etc
Run Code Online (Sandbox Code Playgroud)


Mic*_* Z. 10

我对列乱序的简单解决方案是添加这个设置DisplayIndex为的循环Index.

foreach (DataGridViewColumn col in grid.Columns) {
    col.DisplayIndex = col.Index;
}
Run Code Online (Sandbox Code Playgroud)

在添加时Index将分配给每个列.我不确定为什么DisplayIndex会出现故障,但上面的脚本会修复它.


小智 7

对我来说,这不是诀窍。还需要一行:

entityDataGridView.AutoGenerateColumns = false;
Run Code Online (Sandbox Code Playgroud)

问候!


ihe*_*heb 5

尝试像这样使用显示索引

 private void AdjustColumnOrder()
{
    customersDataGridView.Columns["Park Name"].DisplayIndex = 0;
    customersDataGridView.Columns["Author"].DisplayIndex = 1;
    customersDataGridView.Columns["Total Downloads"].DisplayIndex = 2;
}
Run Code Online (Sandbox Code Playgroud)