重新排列DataGridView中的列
本文关键字:DataGridView 排列 新排列 | 更新日期: 2023-09-27 18:26:40
我正在通过代码填充DataGridView
(Winforms),并从DataTable
中竞标行。此外,用于重新排序列的属性也设置为true
如果我重新排序列,并且我想获得列的新顺序,则顺序总是相同的。这意味着,如果第一列命名为"ID"
,最后一列命名为"Price"
,通过移动ID
代替Price
,移动Price
代替ID
,如果我想使用以下代码列出列:
for (int i = 0; i <= dgAnalyse.Columns.Count - 1; i++)
{
if (dgAnalyse.Columns[i].Visible == true)
{
Console.WriteLine(dgAnalyse.Columns[i].HeaderText);
}
}
我会得到:ID,价格不是价格,ID
是否可以获取列的新顺序列表?
如果我重新排序列,并且我想获得列的新顺序总是一样的。
在运行时使用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
您可以设置各个列的DisplayIndex属性。
我认为您误解了如何在特定情况下使用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);
}
}