我使用 JSP 脚本在网页上生成一个表,给定一个列表,解析值并生成表。我的表需要为每个名称参数具有相同的行数(示例中为 2),如下所示:id name value1 value10 name1 12 131 name1 11 92 name2 14 23 name2 14 44 name3 12 55 name3 1 26 name4 12 17 name4 15 2一旦 jsp 接收到包含其中一个名称的新列表元素,该表就需要删除接收到的较旧的名称并添加新行。如果我们收到新的 name1 列表,则:id name value1 value11 name1 11 98 name1 21 242 name2 14 23 name2 14 44 name3 12 55 name3 1 26 name4 12 17 name4 15 2如果我们收到新的 name3 列表,则:id name value1 value11 name1 11 98 name1 21 242 name2 14 23 name2 14 45 name3 1 29 name3 25 196 name4 12 17 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()}; }} );使用这种方法,我永远不会删除旧行,因为一旦我重新加载页面,它就会被删除。使用我重新加载页面后提供的代码,该行将再次重新绘制。在特定阈值之后绘制新行后,如何立即删除旧行?
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
我自己用一些解决方法解决了这个问题。基本上,一旦生成表,我就会调用一个函数来删除第一行(最旧的 id),用户看不到任何内容,并且阈值被超过。
与此类似:
function deleteRow() {
var group = //get//group//names
var threshold = totalGroupLines
while(myTable.rows().count() >= threshold){
myTable.row(0).remove().draw();
}
}
添加回答
举报
0/150
提交
取消