2016-11-21 6 views
0

私は行と列の順序を変更できるhtmlテーブルを持っています。行を並べ替えるドラッグ&ドロップによる反応によるテーブル列の並び替え

enter image description here

かなりstraight forwardですが、列のセルは同じ親要素を共有していないので、列の順序を変更することはかなり難しいです。

<table> 
    <tr> 
    <td>Col 1</td> 
    <td>Col 2</td> 
    </tr> 
    <tr> 
    <td>Col 1</td> 
    <td>Col 2</td> 
    </tr> 
</table> 

反応で列ドラッグを実装するにはどうすればよいですか?

+0

解決方法をお探しですか?私はまったく同じ問題を抱えていました。 – morne

+0

これは動作する可能性があります。 https://github.com/schrodinger/fixed-data-table-2 – morne

+0

まだありません。私はもっ​​と簡単なアプローチで行きました。 – HaNdTriX

答えて

1

データとビューの間に、列インデックスが使用される抽象レイヤーを追加する必要があります。例:

var data : [["a","b","c"],["a2","b2","c2"]]; 
var columns = [2,1,0]; 

function getData(row, col) { 
    return data[row][columns[col]]; 
} 

次に、列をドラッグすると、列var内のインデックスが変更されます。

+0

あなたの答えをありがとう。しかし、私の問題は、共通のルートノードを共有しないため、複数の要素を同時にドラッグできないことです。答えはパフォーマンスの問題をターゲットにしています。私の質問は、より多くのDOM/React指向です。 – HaNdTriX

1

私はあなたがそれをやりたいことをやり遂げるためにカスタムのDragLayerを実装する必要があると思います。そうすれば、ドラッグプレビューの外観を完全に制御して、それを作ることができます基本プレビューから取得する単一のセルの代わりに列をレンダリングします。

次に、列がドラッグされているときに、そのセルのすべてが表示:なしまたは何かが消えるようにして、カスタムDragLayerが新しいテーブルにレンダリングされた列をユーザーに表示するようにすることができますプレビュー

彼はここでカスタムDragLayerを書く方法について、かなり良いチュートリアルを持っています:http://gaearon.github.io/react-dnd/examples-drag-around-custom-drag-layer.htmlあなたが助けに従うことができます。

関連する問題