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接收到包含其中一个名称的新列表元素,该表就需要删除接收到的名称中较早出现的部分,并添加新行。如果我们收到一个新的名称1列表,那么:

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

如果我们收到一个新的名称3列表,那么:

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>

由于我是按名称分组的,所以我使用以下Datatable代码:

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()};
}
} );

使用这种方法,我永远不会删除旧的行,因为一旦我重新加载页面,它就会被删除。使用提供的代码,只要我重新加载页面,行就会被重新绘制。在某个阈值之后,一旦绘制出新的行,我如何删除旧的行?谢谢

我自己用一点变通方法解决了这个问题。基本上,一旦生成了表,我就调用一个函数来删除第一行(最旧的id(,这样用户就看不到任何内容,并且超过了阈值。

类似于此:

function deleteRow() {
var group = //get//group//names
var threshold = totalGroupLines
while(myTable.rows().count() >= threshold){
myTable.row(0).remove().draw();
}
}

最新更新