如何以编程方式将所需行移动到数据表的顶部

How to programatically move the desired row to the top of datatable?

本文关键字:移动 数据表 顶部 编程 方式      更新时间:2023-09-26

我有一个数据表,其中包含 AJAX 加载的数据。我想修改它,所以当用户访问mypage/数据表时,数据表会突出显示相应的行并将其移动到表的顶部。我已经用这段代码突出显示了该行:

        "rowCallback": function( row, data, index ) {
        if ( data.id == given_id ) {
            $(row).addClass('success');
            console.log(index);
        }
    }

它可以工作,但是当此行位于例如第 10 页上时会出现问题。当用户进入网页时,数据表仅显示第一页。我想以编程方式将分页更改为所需的页面或将行移动到表格顶部,因此当用户输入时,他会在顶部看到"他的"行。如何实现这一点?

我已经解决了我的问题。解决方案如下:

  1. 我在 html 表结构中添加了其他<th>
  2. 然后,我在数据表呈现代码中添加了以下代码:

    var table = $("#table_placeholder").dataTable( {
    "ajax": Routing.generate('myAjaxUrl'),
    "columns": [
        {
            "visible": false,
            "data":"user_id",
            "render": function ( data, type, full, meta ) {
                return data == displayUserId ? 1 : 0;
            }
        },
        //-rest of the code-
    

    其中user_id是从数据库导入的 ID,displayUserId 是通过 url 参数传递并存储在隐藏的 html 输入中的 ID。

  3. 我在数据表呈现代码的末尾添加了以下行:

    "rowCallback": function( row, data, index ) {
        if ( data.user_id == displayUserId ) {
            $(row).addClass('highlighted-row');
            console.log(index);
        }
    },
    "order":[[0,'desc']]
    

    rowCallback 函数允许我突出显示该行,然后我从 2 开始对隐藏列进行用户排序。这会将所需的行带到顶部。

可能值得添加一个时间戳列,并在选择时按它排序,

或者,您可以获取顶行的sortid,递增数据库中的所有sortid,然后插入新行并将其sortid设置为旧顶行之前具有的行。