0

这是一个jsfiddle:http: //jsfiddle.net/vT67Q/

该表如下所示:

table_products
----------------
id
sort_order
product_name
view_count
model_num
price
shipp_sep

此表包含 100 多个产品,每个产品都与一个类别相关联。他们没有 sort_order 值,每个字段都为空。我的问题是如何传递排序索引?我会让 jquery 计算每一行并将一个值附加到隐藏的文本框中吗?或者如何在没有排序值冲突并始终保持唯一且有序的情况下完成。

4

1 回答 1

0

这是我的做法:

  • 使用(隐藏)字段(例如该行的自定义 HTML 属性)加载表,告诉您该行的 sort_index,仅当它不为 NULL 时
  • 在 PHP 中对表进行排序,知道您可能会在设置的行之后处理 NULL sort_order 行
  • 在 drop 事件上,访问 first 之前的行:
    • 获取最高的非 NULL 行并将所有那些(到你丢弃的)设置为它们各自的顺序
    • 现在,如果下一行不是 NULL,则增加下所有非 NULL 的 sort_order (您将表向下移动一行)
    • 在另一种情况下也是如此,如果刚刚结束的行具有更高的排序顺序,则将所有从原始行位置减少到最后一个位置(现在向上移动一行)
  • 当然,将删除的行设置为正确的 sort_order

这看起来很复杂,我相信在这种情况下,您应该定义表行的 sort_orderNON NULL AUTO_INCREMENT以摆脱那个丑陋的 NULL 值。

另一种方法可能是创建一个自定义 SQL 函数INSERT_ROW(index)来执行所有递增和递减操作。在 Ajax 中这样做似乎很残酷。

于 2012-07-04T23:57:11.427 回答