如何使用表

时间:2016-11-06 11:08:23

标签: vb.net sqlite sorting datagridview

我从SQLite数据库加载DataGrid上的数据,代码如下:

conn.Open()
Dim sql = "SELECT * FROM TableDataGrid"
Dim cmdConnection As SQLiteCommand = New SQLiteCommand(sql, conn)

Dim da As New SQLiteDataAdapter
da.SelectCommand = cmdConnection

Dim dt As New DataTable
da.Fill(dt)
MyDataGrid.DataSource = dt

当用户点击一行时,我会在几个文本框,组合框上显示数据,完全没问题。

现在我需要让用户通过单击他想要的列对DataGrid进行排序,当然不是那么简单。

研究" e.RowIndex> = 0"和" System.NullReferenceException"错误我理解"问题是开箱即用的BindingList不支持排序!我知道 - 听起来很愚蠢,但事实就是如此。"张贴在这里:WinForms: DataGridView - programmatic sorting

所以,如果我是对的,我需要实现自己的SortableBindingList,但我感到困惑,因为代码示例是关于LIST的,我在TABLE(dt)上加载数据库记录

实施例: http://timvw.be/2007/02/22/presenting-the-sortablebindinglistt/

另一篇帖子说我可以通过以下方式解决问题:

SortableBindingList<YourListType> sortableBindingList = new SortableBindingList<YourListType>(list)

在这种情况下,使DataGrid可以排序的通用解决方案是什么?

1 个答案:

答案 0 :(得分:0)

感谢用户的提示,我找到了解决方案

 Private Sub MyDataGrid_SelectionChanged(sender As Object, e As EventArgs) Handles MyDataGrid.SelectionChanged

    'Check if the user clicked on a header or a row

    Try
        If MyDataGrid.CurrentRow.Index = Nothing Then
            'Header clicked!! 
        Else
            'Row clicked!!!
            'Here I load the data of the clicked row on my form
            FormCleanDataEntry()
            FormShowRowData()
        End If
    Catch ex As Exception
        'MsgBox(ex.ToString())
    End Try

End Sub

好奇心是抛出了异常,但无论如何我没有向用户显示任何消息,并且DataGrid已经排序并且程序正常运行