对表行进行排序并通过 AJAX 传递排序索引


sorting table rows and passing the sort index via ajax

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

该表如下所示:

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

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

这是我的做法:

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

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

另一种方法是创建自定义 SQL 函数INSERT_ROW(index),该函数执行所有递增和递减。在阿贾克斯这样做似乎很残酷。