通过单击列标题对表进行排序

时间:2013-10-15 13:06:45

标签: javascript

我遇到了通过单击列名对表中的数据进行排序的问题。我尝试了很多解决方案。但问题是,当我使用javascript insertRow()方法向表中添加行时,它似乎工作正常。插入新行后,当我点击任何列时,旧数据只会被排序,我通过javascript插入的新行正在消失。以下是代码: 您可以在此链接http://www.allmyscripts.com/Table_Sort/

中找到gs_sortable.js文件
<script type="text/javascript">
        var TSort_Data = new Array ('my_table', 's', 'd', 'c', 'i');              
    </script>
    <title>JSP Page</title>
</head>
<body><h3 align="center" >
    </h3><table class="table-autosort" width="100%"> <table id="my_table">
            <thead>
                <tr>
                    <th width="25%">Product</th>
                    <th width="25%">Date</th>
                    <th  width="25%">Price per unit</th>
                    <th width="25%">Units sold</th>
                </tr>
            </thead>
            <tr>
                <td width="25%" >Item A</td>
                <td width="25%">14/5/2012</td>
                <td width="25%">$28</td>
                <td width="25%"> 1</td>
            </tr>
            <tr>
                <td width="25%"> Item B</td>
                <td width="25%">14/5/2012</td>
                <td width="25%">$35</td>
                <td width="25%">1</td>

            </tr>
            <tr>
                <td width="25%">Item A</td>
                <td width="25%">13/5/2012</td>
                <td width="25%">$25.15</td>
                <td width="25%">20</td>
            </tr>
            <tr>
                <td width="25%">Item C</td>
                <td width="25%">15/5/2012</td>
                <td width="25%">$20</td>
                <td width="25%">100</td>
            </tr>
        </table>
        <button type="button" onclick="displayResult()">Insert new row</button>
    </table>

</body>

当我点击列标题时,我希望新行位于排序列表中。

谢谢

1 个答案:

答案 0 :(得分:0)

这是一个解决方案http://jsfiddle.net/GbGx5/4/

的工作小提琴

导入的东西是在调用insertRow后用tsort重新注册表数据,否则tsort中缓存的数据将只包含旧的表数据。

要执行此操作,请调用以下方法(如使用带动态加载表的脚本 http://www.allmyscripts.com/Table_Sort/#example中的文档中所建议的那样)

// Make sure we refresh the TSort_Data Array!
TSort_Data = new Array ('my_table', 's', 'd', 'c', 'i');
tsRegister();
tsSetTable('my_table');
tsInit();    

示例的完整JavaScript如下...

var TSort_Data = new Array ('my_table', 's', 'd', 'c', 'i');              

function insertNewRow() {
    var table=document.getElementById("my_table"),
        newRowIndex = table.getElementsByTagName('tr').length,
        row=table.insertRow(newRowIndex),
        cell1=row.insertCell(0),
        cell2=row.insertCell(1),
        cell3=row.insertCell(2),        
        cell4=row.insertCell(3);

    cell1.innerHTML = "New Item";
    cell2.innerHTML = "15/10/2013";
    cell3.innerHTML = "$5";
    cell4.innerHTML = 51;    

    // Make sure we refresh the TSort_Data Array!
    TSort_Data = new Array ('my_table', 's', 'd', 'c', 'i');
    tsRegister();
    tsSetTable('my_table');
    tsInit();    
}