0

ここにjsfiddleがあります:http://jsfiddle.net/vT67Q/

テーブルは次のようになります。

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

このテーブルには100を超える製品が含まれており、各製品はカテゴリに関連付けられています。それぞれのフィールドがnullであるsort_order値を持っていません。私の質問は、ソートインデックスを渡すにはどうすればよいですか?jqueryですべての行をカウントし、その値を非表示のテキストボックスに追加しますか?または、ソート値が衝突せず、常に一意で整然とした状態を維持せずに、どのように実行するのでしょうか。

4

1 に答える 1

0

これが私がそれを行う方法です:

  • (隠し) フィールド (行のカスタム HTML 属性など) を使用してテーブルをロードし、NULL でない場合にのみ、行の sort_index を通知します。
  • 設定された行の後に NULL の sort_order 行を処理する可能性が高いことを知って、PHP で前にテーブルを注文します。
  • drop イベントで、 first の前の行にアクセスします。
    • 最高の非NULL行を取得し、その下にあるすべての行を(ドロップした行に)それぞれの順序に設定します
    • ここで、次の行が NULL でない場合は、その下にあるすべての非 NULL の sort_order をインクリメントします (テーブルを 1 行下にシフトします)
    • 他の場合も同様です。ちょうど上の行の sort_order が高い場合は、元の行の場所から最後の行にすべての行をデクリメントします (ここで 1 行上にシフトします)。
  • もちろん、ドロップされた行を正しい sort_order に設定します

これはかなり複雑に思えます。このようなケースでは、テーブルの行の sort_order を定義してNON NULL AUTO_INCREMENT、見苦しい NULL 値を取り除く必要があると思います。

INSERT_ROW(index)もう 1 つの方法は、インクリメントとデクリメントをすべて実行するカスタム SQL 関数を作成することです。これを Ajax で行うのは、残忍なことのように思えます。

于 2012-07-04T23:57:11.427 に答える