Фильтры динамических столбцов - PullRequest
0 голосов
/ 14 ноября 2018

Вместо того, чтобы ссылаться на столбцы по номеру, я хотел бы определить фильтры более динамично.В частности, я хотел бы сказать, что «все столбцы с классом xx получают тип фильтра yyy».Это возможно?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Поскольку 0.9.4.beta.10 , вы также можете использовать columnDefs и предоставить yadcf column_selector вместо column_number, увидеть его в действии

var columnDefs = [{
    "targets": "API",
    "data": "API"
  },
  {
    "targets": "Description",
    "data": "Description"
  },
  {
    "targets": "Category",
    "data": "Category"
  },
];



var exampleTable1 = $("#example1").DataTable({
  "ajax": {
    "url": "https://api.publicapis.org/entries?category=Animals",
    "cache": true, // Or else `&_=23628934` gets added to the query string.
    "dataSrc": "entries"
  },
  "columnDefs": columnDefs
});

var yadcfConfiguration = [{
      // https://datatables.net/reference/type/column-selector
      column_selector: '.API'
    },
    {
      // https://datatables.net/reference/type/column-selector
      column_selector: '.Description',
      filter_type: "text"
    },
    {
      // https://datatables.net/reference/type/column-selector
      column_selector: '.Category',
      filter_type: "text"
    }
  ];

 yadcf.init(exampleTable1, yadcfConfiguration);
0 голосов
/ 14 ноября 2018

Мне удалось решить эту проблему.Размещать код на тот случай, если он кому-то пригодится:

// Set filters
var THs = document.getElementsByTagName("th");
var filterArray = [];
for (i = 0; i < THs.length; i++) {
    var colNumber = i;
    if ((THs[i].classList.contains('searchText')) || (THs[i].classList.contains('searchSelect')) || (THs[i].classList.contains('searchDate'))) {
        if (THs[i].classList.contains('searchText')) {
            var colFilter = "text";
        }
        if (THs[i].classList.contains('searchSelect')) {
            var colFilter = "select";
        }
        if (THs[i].classList.contains('searchDate')) {
            var colFilter = "range_date";
        }
        filterArray.push({column_number: colNumber , filter_type: colFilter});
    }
}

yadcf.init(containerTable, filterArray);
...