Фильтр столбцов с данными, например фильтр столбцов Excel

Я использую ASP.NET Core 6 MVC. У меня есть такая таблица:

<div class = "card-body">
   <table class = "table display table-bordered" id = "DATATABLE"></table>         
</div>

Я ищу способ иметь такой заголовок столбца:

Фильтр столбцов с данными, например фильтр столбцов Excel

Я безуспешно пробовал следующий код:

$("#DATATABLE").DataTable({
  serverSide: true,
  filter: true,
  searchDelay: 1000,
  scrollY: StaticData.TABLE_HEIGHT + 'px',
  lengthMenu: StaticData.TABLE_PAGE_SIZE,            
  scrollCollapse: true,
  ajax: {
    url: '/STUD_MANAGEMENT/LoadStudents',
    type: 'GET',
    datatype: 'json',
    headers: { 'RequestVerificationToken': 'your json token' },                
    dataSrc: (json) => {
      json = json.data;

      for (let i = 0, ien = json.length; i < ien; i++) {
        json[i]['isactive'] = '<input type = "checkbox">';
      }
      return json;
    }
  },
  columnDefs: [{ className: "dt-center", targets: [7], width: '2%', }],
  columns: [
    { data: 'STUD_ID', title: 'STUD ID', autoWidth: false, visible : false },
    { data: 'NAME', title: 'Name', autoWidth: true },
    { data: 'CLASS', title: 'Class', autoWidth: true },             
    { data: 'isactive', title: 'Is Active ?', autoWidth: false, orderable: false },                
    { data: 'USER', title: 'User', autoWidth: true },
    { data: 'DATE', title: 'Date', autoWidth: true },               
  ],
});
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете попробовать этот код ниже, чтобы реализовать фильтр в активном неактивном поле:

$(document).ready(function() {
  var dataTable = $("#DATATABLE").DataTable({
    serverSide: true,
    filter: true,
    searchDelay: 1000,
    scrollY: StaticData.TABLE_HEIGHT + 'px',
    lengthMenu: StaticData.TABLE_PAGE_SIZE,
    scrollCollapse: true,
    ajax: {
      url: '/STUD_MANAGEMENT/LoadStudents',
      type: 'GET',
      datatype: 'json',
      headers: { 'RequestVerificationToken': 'your json token' },
      dataSrc: function(json) {
        json = json.data;
        for (var i = 0, ien = json.length; i < ien; i++) {
          // Set the checkbox to be checked if Is_Active is true
          json[i]['isactive'] = '<input type = "checkbox" ' + (json[i].Is_Active ? 'checked' : '') + '>';
        }
        return json;
      }
    },
    columnDefs: [{ className: "dt-center", targets: [7], width: '2%' }],
    columns: [
      { data: 'STUD_ID', title: 'StudID', autoWidth: false, visible: false },
      { data: 'NAME', title: 'Name', autoWidth: true },
      { data: 'CLASS', title: 'Class', autoWidth: true },
      { data: 'isactive', title: 'Is Active?', autoWidth: false, orderable: false },
      { data: 'USER', title: 'User', autoWidth: true },
      { data: 'DATE', title: 'Date', autoWidth: true },
    ],
    headerCallback: function(thead, data, start, end, display) {
      $(thead).find('th').eq(3).html(
        '<div>' +
          '<input type = "checkbox" id = "filter-active" /> Active<br>' +
          '<input type = "checkbox" id = "filter-non-active" /> Non Active<br>' +
          '<input type = "checkbox" id = "filter-all" checked /> ALL' +
        '</div>'
      );
    },
    drawCallback: function(settings) {
      //Code to update checkbox state based on current filters
    }
  });

  $(document).on('change', '#filter-active', function() {
    // Apply filter for active
  });

  $(document).on('change', '#filter-non-active', function() {
    // Apply filter for non-active
  });

  $(document).on('change', '#filter-all', function() {
    // Apply filter for all
  });

  // Handle row checkbox changes if needed
  $('#DATATABLE tbody').on('change', 'input[type = "checkbox"]', function() {
    //Get row data
    var data = dataTable.row($(this).parents('tr')).data();
    //Change Is_Active status
    var isActive = this.checked;
    //AJAX call to update the server-side data
    console.info('Student ID: ' + data.STUD_ID + ' is now ' + (isActive ? 'active' : 'non-active'));
    //Server update code
  });
});

Спасибо. У меня есть еще одна проблема. У меня есть логическое свойство Is_Active в классе Student. Как мы можем привязать данные к флажку (не в фильтре заголовка)? но в коде — json[i]['isactive'] = '<input type = "checkbox">'

Jerry Mon 09.04.2024 17:41

@JerryMon проверьте обновленный код. дайте мне знать, если у вас есть какие-либо опасения

Jalpa Panchal 10.04.2024 14:42

Другие вопросы по теме