1

我有 id 表test_table

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

和或有不同的ID。

我已经订购了行 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);
    }
});
4

2 回答 2

1

我想你是在客户端表排序之后,网上有很多可用的,这取决于你熟悉的 javascript 库。我选择使用一个名为tablesorter的 jQuery 插件,我根据您的标签假设它对您来说也是一个不错的选择。

它的缺点是它只是客户端,所以如果用户没有启用 Javascript,他们将无法对表格进行排序,我想说这不是主要问题,普通用户总是有启用 Javascript。

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

ORDER BY "$selectedField" "$order"

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

现在许多流行的 Web 开发框架都提供了这种特性,如果你还没有发现它,我鼓励你看看你的编程语言的一些选项。

于 2012-04-17T07:37:22.697 回答
1

如果你想在 jQuery 中做所有事情,看起来你正在尝试做,那么我会研究jQuery Sortable但如果你希望它像一个链接/按钮,通过升序或降序对每个字段进行排序,或通过类似的用户名等,并将其保留在服务器端,然后我建议让按钮/链接重新加载自身,并在 url 中使用子查询来表示类似?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列表将按参数排序。

于 2012-04-17T08:27:34.630 回答