JQuery 从 jsp 生成的数据表中删除阈值后的旧行

我使用 JSP 脚本在网页上生成一个表,给定一个列表,解析值并生成表。我的表需要为每个名称参数具有相同的行数(示例中为 2),如下所示:


id name value1 value1

0  name1 12    13

1  name1 11    9

2  name2 14    2

3  name2 14    4

4  name3 12    5

5  name3 1     2

6  name4 12    1

7  name4 15    2

一旦 jsp 接收到包含其中一个名称的新列表元素,该表就需要删除接收到的较旧的名称并添加新行。如果我们收到新的 name1 列表,则:


id name value1 value1

1  name1 11    9

8  name1 21    24

2  name2 14    2

3  name2 14    4

4  name3 12    5

5  name3 1     2

6  name4 12    1

7  name4 15    2

如果我们收到新的 name3 列表,则:


id name value1 value1

1  name1 11    9

8  name1 21    24

2  name2 14    2

3  name2 14    4

5  name3 1     2

9  name3 25    19

6  name4 12    1

7  name4 15    2

这是我的代码:


<table id="myTable">

<thead>

<tr>

<th>id</th>

<th>name</th>

<th>value1</th>

<th>value2</th>

</tr>

</thead>


<tbody>

<td>

<c:forEach items="${my_params}" var="param">

<td>${param.param}</td>

</c:forEach>

</td>

</tbody>

由于我按名称分组,因此我使用以下数据表代码:


var group = $('tr.group');

var totalGroups = group.length;

var maxRows = totalGroups*2;



var groupColumn = 1;

$('#myTable thead th').unbind('click');

var table = $('#myTable').DataTable({

    "columnDefs": [

        { "visible": false, "targets": groupColumn }

    ],

    "order": [[ groupColumn, 'asc' ]],

    "displayLength": 40,

    "drawCallback": function ( settings ) {

        var api = this.api();

        var rows = api.rows( {page:'current'} ).nodes();

        var last=null;


        api.column(groupColumn, {page:'current'} ).data().each( function ( group, i ) {

            if ( last !== group ) {

                $(rows).eq( i ).before(

                    '<tr class="group"><td colspan="5">'+group+'</td></tr>'

                );


                last = group;

            }

        } );

         if(table.rows().count() >= maxRows) {table.row(0).remove().draw()};

    }

} );

使用这种方法,我永远不会删除旧行,因为一旦我重新加载页面,它就会被删除。使用我重新加载页面后提供的代码,该行将再次重新绘制。在特定阈值之后绘制新行后,如何立即删除旧行?


拉丁的传说
浏览 89回答 1
1回答

当年话下

我自己用一些解决方法解决了这个问题。基本上,一旦生成表,我就会调用一个函数来删除第一行(最旧的 id),用户看不到任何内容,并且阈值被超过。与此类似:function deleteRow() {&nbsp; &nbsp; var group = //get//group//names&nbsp; &nbsp; var threshold = totalGroupLines&nbsp; &nbsp;while(myTable.rows().count() >= threshold){&nbsp; &nbsp; &nbsp;myTable.row(0).remove().draw();}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript