如何根据行ID列表更改表中行的顺序?

时间:2012-04-17 07:27:13

标签: javascript jquery html css

我的表格为test_table

<table id="test_table"> </table>

和/或有不同的身份。

我已经订购了行列表ID

["name","value","description"]

与屏幕上呈现的表格有什么不同(用户可以在飞行中设置新订单,这就是我填写行列表ID的方式)。

如何根据有序列表在该表中设置新订单? (说明: 我有另外两个列表,用户可以在第一个表中拖放行,我需要在第二个表中有相同的顺序,第二个表中的ID具有相同的ID,如第一个+前缀“预览”。 这是我在第一个表中拖放的方式。 )

$("#cleanVert").tableDnD({
    onDragClass: "myDragClass",
    onDrop: function(table, row) {
        var rows = table.tBodies[0].rows;
        var debugStr = "New Order: ";
        var outStr = "";
        for (var i=0; i<rows.length; i++) {
            debugStr += rows[i].id+" ";
            outStr += rows[i].id;
            if(i<(rows.length-1)){
                outStr+=","
            }
        }
        $("#debugArea").html(debugStr);
    },
    onDragStart: function(table, row) {
        $("#debugArea").html("Started dragging row "+row.id);
    }
});

2 个答案:

答案 0 :(得分:1)

我认为你是在进行客户端表排序后,在网上有很多可用的,这取决于你熟悉的javascript库。我选择使用一个名为tablesorter的jQuery插件,我假设根据你的标签,它也可能是你的好选择。

它的缺点是它只是客户端,所以如果用户没有启用Javascript,他们将无法对表进行排序,我会说这不是一个主要问题,平均用户始终启用Javascript。

另一种选择是构建服务器端排序,这可以像添加

一样简单
ORDER BY "$selectedField" "$order"

在您的数据库查询中。它还可以确保它在没有Javascript的情况下工作。

如今许多流行的Web开发框架都提供了这种功能,如果你还没有发现它,我建议你看一下编程语言的一些选项。

答案 1 :(得分:1)

如果你想在jQuery中做所有事情,看起来你正在尝试做,那么我会调查jQuery Sortable,但是如果你想让它像一个链接/按钮,按每个字段排序说升序或降序,或者通过类似的用户名等,并保持服务器端,然后我建议让按钮/链接重新加载自己的网址中的子查询,如?order_by=asc?order_by=username&dir=asc然后在页面上运行检查,将该变量/子查询($ _GET ['order_by'])传递给函数。在该函数中,执行与此类似的查询:

$order_by = "ORDER BY " . $_GET['order_by'] . $_GET['dir'];
$query = "SELECT *
          FROM table
          $order_by";

然后您可以使用相同的查询对主页面加载(尚未排序)而没有使用变量的困难,然后当使用加载的$order_by重新运行查询时,列表将是按参数排序。