【问题标题】:jQuery UI sortable for giant lists and saving in databasejQuery UI 可对巨型列表进行排序并保存在数据库中
【发布时间】:2012-02-13 09:57:32
【问题描述】:
我正在使用 jQuery UI 的可排序列表来允许用户拖动和更改列表的排序。
我通常会取回每个项目的 ID 和数组键,然后更新数据库中每一行的排序号。
这一切都很好,看例子似乎是大多数人的正常做法。
我想知道的是,对每个项目运行 UPDATE 查询是否是存储排序顺序的最有效方式?以上内容适用于一些项目,但如果我有一个说 200 个项目的列表怎么办?运行 UPDATE 查询 200 次只是为了将第 2 项移动到第一个位置似乎有些过分。
有人有更有效的方法吗?
谢谢。
【问题讨论】:
标签:
jquery
sorting
jquery-ui-sortable
【解决方案1】:
如果您要跟踪每个项目的位置,则只需更新那些已更改的项目的位置。即,如果您将项目#19 移动到位置 1,则您将项目 1-18 向上移动了一个位置。您不必更改项目 20-200 的位置。
此外,如果您使用的是 .NET/SQL Server 2008,您可以使用用户定义的表类型 (UDTT) 并将数据表作为参数之一传递给您的存储过程,该存储过程包含所有项目的列表和他们当前的列表位置,然后对数据集进行更新,而不是单独对每个项目进行更新。没有 RBAR :-)