2009-11-10 58 views
8

我使用jQuery来驱动我的AJAX UI。我有一个数据表,我想让用户通过拖放来重新排列表中的列。我希望用户能够抓取列的标题并移动它。下面的数据行应该遵循。请注意,我对而不是有兴趣对数据进行排序或重新排序行,但允许用户更改列的顺序。使用jQuery拖放表列的排序

有没有现有的解决方案?我尝试在<th>元素上使用标准的jQuery排序调用,但当然不起作用。我浏览了jQuery插件网站并没有找到任何东西。我需要写一个jQuery插件吗?

编辑:请注意,jQuery,Dojo等(免费版)实际上是JS框架的唯一选项。我无法获得像ExtJS这样的商业许可证。

+0

做任何你行的跨越多于一列? – 2009-11-10 03:58:16

+0

不是。这是非常直接的标记。我可以发布它,但我不认为这太令人吃惊。 – 2009-11-10 05:03:36

回答

1

如果您愿意支付许可证,您可以尝试使用Ext JS而不仅仅是jQuery。有一些非常强大的网格功能,包括你想要做的事情。

http://www.extjs.com/deploy/dev/examples/grid/array-grid.html

+0

不幸的是,我无法将我工作的委员会讨论进去。他们有点紧张。不过谢谢 - 这正是我正在寻找的。 – 2009-11-10 05:02:31

2

你应该尝试Dragtable by Danvk

我发现这个问题,而虽然它寻找一个修复一个bug。它不喜欢水平滚动面板中的表格。

除此之外它太棒了。

4

可排序的jQuery UI库似乎正是你想要做的。

https://github.com/dbrink/sorttable/wiki http://plugins.jquery.com/project/sorttable

+1

请注意,这与Jquery UI Sortable不同(请注意可排序中的额外T)。 – Flimm 2014-03-27 17:00:38

+0

好点。它是* a *可排序的表,它支持恰好使用jQuery的功能。至于质量,YMMV,因为我没有使用它,我只是偶然注意到它。 – aradil 2014-03-28 13:16:36

-1

你的意思是这样的吗? Table Drag and Drop JQuery plugin

+0

处理_rows_和OP的重新排列明确指出他不是在寻找什么。 – 2012-04-10 08:32:07

6

试试这个:

$('.sort').sortable({ 
 
    cursor: 'move', 
 
    axis: 'y', 
 
    update: function(e, ui) { 
 
    $(this).sortable('refresh'); 
 
    var params = {}; 
 
    params = $('.id').serializeArray(), 
 
     $.ajax({ 
 
     type: 'POST', 
 
     data: { 
 
      id : params 
 
     }, 
 
     url: 'Your url', 
 
     success: function(msg) { 
 
      // Your sorted data. 
 
     } 
 
     }); 
 
    } 
 
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 

 
<table class="table table-striped table-bordered"> 
 
    <thead> 
 
    <tr> 
 
     <th>abc</th> 
 
     <th>xyz</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody class="sort"> 
 
    <tr> 
 
     <input class="id" name="id" type="hidden" value="Your Value" /> 
 
     <td class="center"><span>Text Here</span></td> 
 
     <td>Yes, you are done</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Foo</td> 
 
     <td>Bar</td> 
 
    </tr> 
 
    </tbody> 
 
</table>