фильтр данных по столбцу для результатов в пределах диапазона (при нажатии кнопки) - PullRequest
0 голосов
/ 10 апреля 2020

В моем документе html есть Datatable с 9 столбцами, который создан и отлично работает с фильтрацией и поиском. Таблица создается с этим кодом:

var productPricingTable = $('#productPriceOpportunitiesTable').DataTable({
      dom: '',       
      "paging": false,
      "info": false
});

У меня есть кнопка, и я пытаюсь сделать так, чтобы при нажатии кнопки она отфильтровывала данные, чтобы только строки со значением 9-го столбца между 1.00 - 1.50.

У меня правильно определено нажатие кнопки в приведенной ниже функции, но я пытаюсь написать код, который будет правильно фильтровать данные.

$("#productTableToggleCheckbox").on('change', function() {
  //productTableToggleCheckbox
  if ($(this).is(':checked')) {
      switchStatus = $(this).is(':checked');
      //when switch is turned on, filter datatable to only show results where the 9th column's value is between 1.00 to 1.50
      //filter table
      //productPricingTable.column( 8 ).search( $(1.07).text() );
      //productPricingTable.draw()
  }
  else {
      switchStatus = $(this).is(':checked');
      //switch is turned off
  }
});

Я сейчас пытаюсь с productPricingTable.column( 8 ).search( $(1.07).text() );, но, похоже, ничего не происходит. Есть ли способ изменить эту строку кода, чтобы она правильно фильтровала таблицу? Что-то вроде:

productPricingTable.column( 8 ).search( col8.value( x >= 1.00 && x <= 1.50) );

1 Ответ

0 голосов
/ 11 апреля 2020

ответил:

    $.fn.dataTable.ext.search.push(
      function( settings, data, dataIndex ) {
        //if 'Show Only Price Opportunities' button is toggled on:
        if($("#productTableToggleCheckbox").is(':checked')){
          var CPI = parseFloat( data[8] ) || 0; // use data for the age column
          console.log("CPI = ", CPI)
          if(CPI < 0.90 || CPI > 1.10){
            //include row in table if CPI matches criteria
            return true;
          }else{
            //if CPI does not match criteria; 
            return false;
          }

        }else{
          return true;
        }
      }
  );
...