【问题标题】:sorting table rows and passing the sort index via ajax对表行进行排序并通过 ajax 传递排序索引
【发布时间】:2012-07-04 23:24:48
【问题描述】:
这是一个 jsfiddle:http://jsfiddle.net/vT67Q/
表格如下所示:
table_products
----------------
id
sort_order
product_name
view_count
model_num
price
shipp_sep
此表包含 100 多个产品,每个产品都与一个类别相关联。他们没有 sort_order 值,每个字段都为空。我的问题是如何传递排序索引?我会让 jquery 计算每一行并将一个值附加到隐藏的文本框中吗?或者如何在没有排序值冲突并始终保持唯一且有序的情况下完成。
【问题讨论】:
标签:
php
jquery
ajax
jquery-ui-sortable
【解决方案1】:
我会这样做:
- 使用(隐藏)字段(例如行的自定义 HTML 属性)加载表,告诉您行的 sort_index,前提是它不为 NULL
- 在 PHP 中对表进行排序,知道您可能会在设置的行之后处理 NULL sort_order 行
- 在 drop 事件中,访问 first 之前的行:
- 获取最高的非 NULL 行并将所有位于(到您删除的)下的所有行设置为各自的顺序
- 现在,如果下一行不是 NULL,则将所有非 NULL 行的 sort_order 递增(您将表向下移动一行)
- 在另一种情况下也是如此,如果刚刚结束的行具有更高的排序顺序,则将所有从原始行位置递减到最后一个位置(现在向上移动一行)
- 当然,将删除的行设置为正确的排序顺序
这看起来很复杂,我相信在这种情况下,您应该将表行的 sort_order 定义为 NON NULL AUTO_INCREMENT 以摆脱那个丑陋的 NULL 值。
另一种方法是创建一个自定义 SQL 函数 INSERT_ROW(index) 来执行所有递增和递减操作。在 Ajax 中这样做似乎很残酷。