为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉丁的传说 2023-08-05 20:52:15
我使用 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();

}

}


查看完整回答
反对 回复 2023-08-05
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信