我的表格为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);
}
});
答案 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
重新运行查询时,列表将是按参数排序。