DataGridView以编程方式排序,区分大小写

时间:2016-03-29 17:54:57

标签: vb.net winforms datagridview vb6

我正在开发一个将VB6应用程序转换为VB.NET的项目。它是第一步,通过Visual Basic 2008进行转换。我用DataGridViews替换了FlexGrids,遇到了一些问题,我很难找到答案。

一个问题是FlexGrid上的排序有很多选项。我在DataGridView中看到的唯一选项是:

System.ComponentModel.ListSortDirection.Ascending
System.ComponentModel.ListSortDirection.Descending

我需要区分大小写的排序。我到处寻找,找不到我需要的东西。甚至很难找到上面的代码。非常感谢任何帮助。

编辑:网格以编程方式填充。

1 个答案:

答案 0 :(得分:3)

如果您手动填充网格,那么ListSortDirection.Ascending应该就是您所需要的。

例如,给定以下Example项列表(任何顺序):

Dim examples = New List(Of Example)() From { _
    New Example() With { _
        Key .Bar = "Abcd", _
        Key .Foo = "3" _
    }, _
    New Example() With { _
        Key .Bar = "ABcd", _
        Key .Foo = "4" _
    }, _
    New Example() With { _
        Key .Bar = "aBcd", _
        Key .Foo = "2" _
    }, _
    New Example() With { _
        Key .Bar = "abcd", _
        Key .Foo = "1" _
    } _
}

使用以下设置:

Dim col1 As New DataGridViewTextBoxColumn()
Dim col2 As New DataGridViewTextBoxColumn()

col1.Name = "Foo"
col2.Name = "Bar"

col1.SortMode = DataGridViewColumnSortMode.NotSortable
col2.SortMode = DataGridViewColumnSortMode.Programmatic

Me.dataGridView1.Columns.Add(col1)
Me.dataGridView1.Columns.Add(col2)

For Each example As Example In examples
    Me.dataGridView1.Rows.Add(example.Foo, example.Bar)
Next

Me.dataGridView1.Sort(col2, ListSortDirection.Ascending)

您应始终将结果视为:

DataGridView ascended sort for "Bar" column