VB.NET中的DataGridView多列排序不起作用

时间:2018-01-30 21:51:16

标签: vb.net winforms sorting datagridview

我有一个DataGridView控件,其中包含一系列玩家,以及他们玩了多少游戏,赢了,输了,赢了百分比和高分。我知道默认情况下控件只能按单列排序,但我发现一段代码似乎应该可以工作,但之后不会用数据填充我的控件。

以下是我在我的程序中实现的代码:

' Style the DataGridView table and customise sorting by PERC, WON and then HIGH

    With frmHighscores
        Dim table As New DataTable()
        table.Columns.Add("Name", GetType(String))
        table.Columns.Add("P", GetType(Integer))
        table.Columns.Add("W", GetType(Integer))
        table.Columns.Add("L", GetType(Integer))
        table.Columns.Add("%", GetType(Decimal))
        table.Columns.Add("High", GetType(Integer))

        For l = 0 To 9
            table.Rows.Add(LNAME(l), PLAYED(l), WON(l), LOST(l), PERC(l), HIGH(l))
        Next

        table.DefaultView.Sort = "% Desc, W Desc, High Desc"
        .dgvHighscores.DataSource = table

    End With

正如您所看到的,我创建了一个表,按3列排序,然后尝试将其作为数据源绑定到我的控件,但控件只显示空单元格;没有数据。数组LNAME()PLAYED()WON()LOST()PERC()HIGH()都包含与数据类型相同的数据类型。表。在我尝试使用这种多重排序之前,我最初使用它们直接向控件添加行,但数据没有显示。

我在这里做错了什么?在将table设置为数据源之后,为什么DataGridView控件不显示数据?

编辑:已添加图片

DataGridView object named dgvHighscores

抱歉图像质量不佳。

1 个答案:

答案 0 :(得分:0)

像往常一样,经过一番努力,我已经设法解决了 - 数据就在那里 - 但是因为我已经在表单上的对象中添加了列,所以程序已经在那些结尾添加了它们!我出于好奇而滚动,他们就在那里。

enter image description here

对于尝试使用DataGridView对象进行多列排序的其他人来说,这可能会有所帮助 - 我的原始代码是合理的,但请确保您没有在表单上添加任何列(对象属性)。

从下图中可以看出,它按%排序,然后按W排序,然后排在高位作为决胜局。快乐的日子

enter image description here