我使用 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()};
}
} );
使用这种方法,我永远不会删除旧行,因为一旦我重新加载页面,它就会被删除。使用我重新加载页面后提供的代码,该行将再次重新绘制。在特定阈值之后绘制新行后,如何立即删除旧行?
当年话下
相关分类