1

ID付きのテーブルがありますtest_table

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

およびまたは異なる ID を持っています。

行のIDのリストを注文しました

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

画面にレンダリングされたテーブルとの違いは何ですか(ユーザーはオンザフライで新しい順序を設定できます。つまり、行のIDのリストを埋める方法です)。

順序付きリストに基づいてそのテーブルに新しい順序を設定する方法は? (説明: 2 つのリストが横に並んでいます。ユーザーは最初のテーブルの行をドラッグ アンド ドロップできます。2 番目のテーブルの ID は、最初の +prefix "preview" と同じ 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 が有効になっています。

もう 1 つのオプションは、サーバー側の並べ替えを構築することです。これは、追加するのと同じくらい簡単です。

ORDER BY "$selectedField" "$order"

データベースクエリで。また、Javascript がなくても動作することが保証されます。

最近では、人気のある Web 開発フレームワークの多くがこの種の機能を提供しています。まだそれを発見していない場合は、プログラミング言語のいくつかのオプションを確認することをお勧めします。

于 2012-04-17T07:37:22.697 に答える
1

あなたがやろうとしているように見えるjQueryですべてをやりたい場合は、jQuery Sortableを調べますが、昇順または降順で各フィールドをソートするリンク/ボタンのようにしたい場合は、?order_by=ascまたはユーザー名などのようにして、サーバー側に保持することをお勧めします。ボタン/リンクをURLのサブクエリでリロードすることをお勧めし?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 に答える