重新排序DataGridView中的列

时间:2013-08-07 10:56:09

标签: c# datagridview

我正在通过代码填充DataGridView(Winforms)并从DataTable中添加行。重新排序列的属性也设置为true。
如果我重新排序列,并且我想获得新的列顺序,则顺序始终相同。这意味着如果第一列被命名为"ID"而最后一列被命名为"Price",则移动ID代替PricePrice代替{{1}如果我想使用这段代码列出列:

ID

我会得到:身份证,价格不是价格,身份证。

是否可以获取新的列顺序列表?

3 个答案:

答案 0 :(得分:1)

  

如果我重新排序列,我想获得新的列顺序   总是一样的。

使用DataGridView.AllowUserToOrderColumns功能在运行时更改列的顺序时,不会更改DataGridView.Columns集合的顺序。只有列的DisplayIndex属性才会更改。

如果您想按显示顺序迭代列,可以使用Link

<强> C#

var q = from c in this.DataGridView1.Columns.Cast<DataGridViewColumn>()orderby c.DisplayIndex select c;
foreach (DataGridViewColumn column in q) 
{
    if (column.Visible == true) 
    {
    Console.WriteLine(column.HeaderText.ToString());
    }
}

<强> VB.Net

Dim q = From c In Me.DataGridView1.Columns.Cast(Of DataGridViewColumn)() Order By c.DisplayIndex Select c
For Each column In q
        If column.Visible Then
            Console.WriteLine(column.HeaderText.ToString())
        End If
Next

答案 1 :(得分:0)

您可以设置各列的DisplayIndex属性。

答案 2 :(得分:0)

我认为您误解了如何在特定情况下使用DisplayIndex属性,请尝试此操作

for (int i = 0; i <= dgAnalyse.Columns.Count - 1; i++)
            {
                if (dgAnalyse.Columns[i].Visible == true)
                {
                    Console.WriteLine(dgAnalyse.Columns[dgAnalyse.Columns[i].DisplayIndex].HeaderText);
                }
            }