代码之家  ›  专栏  ›  技术社区  ›  David

createdCell未按数据排序

  •  0
  • David  · 技术社区  · 6 年前

    我使用jQuery插件datatables来显示来自MySQL数据库的数据。我用来初始化数据表的代码是:

    // Setup the broadcast datatable
    var broadcasts = $('#table_broadcasts').DataTable({
      ajax: {
        url: "../assets/php/get_reports_broadcasts.php",
        dataSrc: ''
      },
      columns: [
        { data: 'date_approved', title: 'Date Sent' },
        { data: 'subject', title: 'Subject Line' },
        { data: 'name', title: 'Business(es) Approved', searchable: false, createdCell:
          function (td, cellData, rowData, row, col) {
            $(td).html('<a type="button" class="btn btn-primary text-white" data-toggle="modal" data-target="#modal_broadcasts">View Approved</a>');
          }
        }
      ]
    });
    

    它的工作原理与预期一样,它显示除最后一列之外的所有数据,而是显示最终启动模态的锚定标记。值得一提的是,以下是我在启动模态时使用的代码:

    $(document).on('click', '#table_broadcasts td a', function() {
      // Get the data at the clicked row
      var data = broadcasts.row($(this).closest('tr').index()).data();
      var subject = data.subject;
      var businesses = data.name;
    
      // Set the data in the modal
      $('#modal_broadcasts_subject').text(subject);
      $('#modal_broadcasts_businesses').html('<li>' + businesses + '</li>');
    });
    

    我遇到的问题是,各个锚点的数据没有与其余数据排序。我的意思是,每当数据进来时,都会在 date_approved 列的降序排列,但datatables会自动按升序排列该列。每当我单击第一行的锚点时,最后一行的数据就会显示在模式中。

    1 回复  |  直到 6 年前
        1
  •  0
  •   David    6 年前

    我意识到我的代码中有错误。通过移除 .index() 从我吵架开始,它就解决了这个问题。即

    var data = broadcasts.row($(this).closest('tr').index()).data(); // Old
    var data = broadcasts.row($(this).closest('tr')).data(); // New