【问题标题】:jquery table columns Drag and Drop with re-orderjquery表列拖放重新排序
【发布时间】:2017-09-04 20:00:11
【问题描述】:

我想让用户通过拖放来重新排列表格中的列。我正在使用 jquery.dragtable.js 允许拖放并在拖放后保存订单,甚至重新加载页面。在这里,我使用 localStorage 来存储表顺序作为插件 JS 提供的选项。它只使用一个表。在多个具有名称列标题的表中,它不起作用。 实际上,它是用另一个表顺序值覆盖以前的 localStorage 变量。

HTML:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Table Reorder</title>
<script src="jquery-1.7.2.min.js"></script>
<script src="jquery-ui.min.js"></script>
<script src="jquery.dragtable.js"></script>
<link rel="stylesheet" type="text/css" href="dragtable.css" />
</head>
<body>
    <table id="tblReg" class="table table-bordered">
        <thead>
            <tr>
                <th>#</th>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Username</th>
                <th>Password</th>
                <th>Email</th>
                <th>Phone</th>
            </tr>
        </thead>
        <tbody class="sort">
            <tr>
                <th>1</th>
                <td>Mark</td>
                <td>Otto</td>
                <td>@mdo</td>
                <td>545trt574</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>2</th>
                <td>Jacob</td>
                <td>Thornton</td>
                <td>@fat</td>
                <td>yffft5456</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>3</th>
                <td>Larry</td>
                <td>the Bird</td>
                <td>@twitter</td>
                <td>fgfhgf444</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>4</th>
                <td>Rima</td>
                <td>the Bird</td>
                <td>@twitter</td>
                <td>jjk8899</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>5</th>
                <td>Sundar</td>
                <td>the Bird</td>
                <td>@twitter</td>
                <td>76767687hjh</td>
                <td>na@email.com</td>
                <td>7788994320</td>
            </tr>
        </tbody>
    </table>

    <hr>

    <table id="tblRegMaster" class="table table-bordered">
        <thead>
            <tr>
                <th>#</th>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Username</th>
                <th>Password</th>
                <th>Email</th>
                <th>Phone</th>
            </tr>
        </thead>
        <tbody class="sort">
            <tr>
                <th>1</th>
                <td>Mark</td>
                <td>Otto</td>
                <td>@mdo</td>
                <td>545trt574</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>2</th>
                <td>Jacob</td>
                <td>Thornton</td>
                <td>@fat</td>
                <td>yffft5456</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>3</th>
                <td>Larry</td>
                <td>the Bird</td>
                <td>@twitter</td>
                <td>fgfhgf444</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>4</th>
                <td>Rima</td>
                <td>the Bird</td>
                <td>@twitter</td>
                <td>jjk8899</td>
                <td>Na@email.com</td>
                <td>7788994320</td>
            </tr>
            <tr>
                <th>5</th>
                <td>Sundar</td>
                <td>the Bird</td>
                <td>@twitter</td>
                <td>76767687hjh</td>
                <td>na@email.com</td>
                <td>7788994320</td>
            </tr>
        </tbody>
    </table>

jQuery -

$(document).ready(function(){

    var tblReg  = $('#tblReg').attr('id');
    var tblRegMaster = $('#tblRegMaster').attr('id');

    processDnD(tblReg);
    processDnD(tblRegMaster);

});


function processDnD(cuTable){
    $('#'+cuTable).find('th').each(function() {
        var ctxt = $(this).text();
        if(ctxt == 'First Name'){
            $(this).attr('id','firstName');
        }else if(ctxt == 'Password'){
            $(this).attr('id','password');
        }else if(ctxt == 'Email'){
            $(this).attr('id','iemail');
        }else if(ctxt == 'Username'){
            $(this).attr('id','Username');
        }else if(ctxt == 'Last Name'){
            $(this).attr('id','lastName');
        }else if(ctxt == '#'){
            $(this).attr('id','slNo');
        }else if(ctxt == 'Phone'){
            $(this).attr('id','phone');
        }       
    })

    $('#'+cuTable).dragtable({ 
        persistState: function(table) { 
        if (!window.localStorage) return; 
            var ss = window.localStorage; 
            table.el.find('th').each(function(i) { 
            if(this.id != '') {table.sortOrder[this.id]=i;} 
        }); 
        ss.setItem('setTableOrder', JSON.stringify(table.sortOrder)); 
        }, 
        restoreState: eval('(' + window.localStorage.getItem('setTableOrder') + ')') 
    });

    $('#'+cuTable).each(function(){
        $(this).dragtable({
            placeholder: 'dragtable-col-placeholder',
            items: 'thead th:not(.notdraggable):not(:has(.dragtable-drag-handle)), .dragtable-drag-handle',
            appendTarget: $(this).parent(),
            scroll: true
        })
    }); 
}

我想工作 reoder multipule 表。请提出任何解决方案。谢谢

插件参考:https://github.com/akottr/dragtable

【问题讨论】:

  • jquery dragtable 可以使用两个表(并且您的代码似乎可以正常工作)。也许您希望第一个表的重新排序也会改变第二个表的顺序?
  • 它运行良好!检查这个codepen.io/mozzi/pen/gwyZrd
  • 是的也改变第二个或更多表的顺序@dekel
  • 是的 mina 拖放工作完美。页面重新加载后不重新排序@ Mina
  • 如果不可能,请为我提供一个通过重新排序@Dekel 进行多表拖放的解决方案

标签: javascript jquery drag-and-drop


【解决方案1】:

我已经解决了这个问题,你可以从 below url 中查看 jsFiddle。我希望这个 sn-p 对你有帮助。

jsfiddle.net/raeeshalam/rn8sxxba

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2012-05-08
    • 2018-09-11
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多