我使用 jQuery UI 的可排序列表来允许用户拖动和更改列表的排序。
我通常会取回每个项目的 id 和数组键,然后更新数据库中每行的排序号。
这一切都很好,并且查看示例,这似乎是大多数人的正常做法。
我想知道的是,对每个项目运行 UPDATE 查询是否是存储排序顺序的最有效方法?上面的方法适用于一些项目,但如果我有一个包含 200 个项目的列表怎么办?仅仅为了将项目 2 移至第一个位置而运行 UPDATE 查询 200 次似乎过多。
有人有更有效的方法吗?
谢谢。
最佳答案
如果您要跟踪每个项目的位置,则只需更新那些已更改项目的位置即可。即,如果将项目 #19 移动到位置 1,则将项目 1-18 向上移动一个位置。您不必更改第 20-200 项的位置。
此外,如果您使用 .NET/SQL Server 2008,则可以使用用户定义的表类型 (UDTT) 并将数据表作为参数之一传递给存储过程,该存储过程包含所有项目的列表和他们当前的列表位置,然后对数据集而不是单独对每个项目进行更新。没有 RBAR :-)
关于jQuery UI 可对巨型列表进行排序并保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8914244/