我只是想知道是否有人愿意给我一些建议。
我有一个 DataGridView,其中包含从我的 SQL 数据库中提取的数据。我想了解如何重新排序 DataGridView 中的行。
目前我正在使用等级系统。我的数据库中有一个名为 ListOrder 的字段,它表示它在我的 DGV 中显示的顺序的等级,我使用 ORDER BY ListOrder 以正确的顺序显示它。
每次将新记录添加到数据库时,我都会使用计数查询,然后对新记录 + 1。因此,例如,如果我的表中有 10 条记录,它计数为 10,然后加 + 1,因此新记录等于 11。这样做的问题是,如果我删除了表中的记录,排名就会不正确。另一个例子是我删除了在我的表中留下 9 的第一条记录,但是因为我使用计数,它会在表中计数 9,然后添加 + 1,它的值是 10,这意味着我可以有 2数据库中包含我的 ListOrder 为 10 的记录。(希望这是有道理的)我知道我也可以使用 MAX 查询,但这仍然给我一个类似的问题。
当我删除一条记录时,我需要它重新计算所有记录并将它们保持相同的顺序。
下面是我用来在表中上下移动记录的代码:
v_SelectRow = dgvLine1.CurrentRow.Index
dbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\planner.mdb;")
dbConnection.Open()
strSQL = "UPDATE [Line1Orders] SET [ListOrder] = ListOrder-1 WHERE ([DateTime] = '" & dgvLine1.Item(8, v_SelectRow).Value & "')"
dbCommand = New OleDbCommand(strSQL, dbConnection)
dbCount = dbCommand.ExecuteNonQuery
dbConnection.Close()
由于计数查询,我遇到的另一个问题是,当我从表中删除例如 4、5、6 的记录时,ListOrder 值为 7 的下一条记录需要向上移动 3 次才能移动超越之前的记录。
我希望这是有道理的。如果有人愿意为我指出正确的方向,了解我如何改进当前系统的功能、查询和任何合乎逻辑的想法,我将不胜感激。我将不胜感激。
多谢你们!