JQuery DataTable Search / Filter FAILS для сгенерированного значения функции столбца

Я использую jQuery Datatables (последняя версия 1.10.19) jQuery ver. 3.3.1 Не получение ожидаемых результатов при поиске в таблице:

если функция используется для возврата сгенерированного значения для столбца поиск не дает желаемых результатов.

var rowno =1;
var dataSet = [
  ["Airi Satou", "Accountant", "Tokyo"],
  ["Angelica Ramos", "Chief Executive Officer (CEO)", "London"],
  ["Gavin Joyce", "Developer", "Edinburgh"],
  ["Jennifer Chang", "Regional Director", "Singapore"],
  ["Brenden Wagner", "Software Engineer", "San Francisco"],
  ["Fiona Green", "Chief Operating Officer (COO)", "San Francisco"],
  ["Shou Itou", "Regional Marketing", "Tokyo"],
  ["Martena Mccray", "Post-Sales support", "Edinburgh"],
  ["Unity Butler", "Marketing Designer", "San Francisco"]
];

 $(document).ready(function() {

  $('#example').DataTable( {
      data: dataSet,
       "columns": [
// ** DataTable search / filter FAIL: on column function generated value ***
       // { "data": function ( row, type, val, meta ) {return rowno++ ;}, "title" : "Row No."},
     { "data": function ( row, type, val, meta ) {return "row"+ rowno++ ;}, "title" : "Row No."},
      { "data": 0,"title": "Name"}, 
      { "data": 1,"title": "Position"}, 
      { "data": 2,"title": "Office"}
    ]
  } );

} );

ПОСМОТРЕТЬ: jsfiddle: https://jsfiddle.net/scriptgurus/q4cvr9a8/

Поиск по "row1.." или row2.. row3.. Мы должны получить строку с "row1" и т.д..

кстати: также, если использовать columns.render (datatables.net/reference/option/columns.render) - тот же сбой - без радости - я использовал этот плагин во многих проектах на протяжении многих лет.. это может быть ошибка версии - поскольку я, кажется, не припоминаю, чтобы эта проблема возникала в более старых версии. Будет расследовать это сейчас.

scriptgurus 27.07.2019 19:48
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
1
111
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вам нужно использовать что-то конкретное, потому что вы всегда добавляете + 1 к rowno. Обычно вы можете сделать это таким образом. Но в вашем случае, если вы это сделаете console.info(rowno++), вы увидите, что он добавляет его много раз, чем вы ожидаете, потому что цикл выполняется в 5 раз, насколько я вижу, поэтому он добавляет всего 45 раз. Элементы массива (9 * 5) = 45, поэтому у вас есть meta Я видел, что он возвращает meta.row с индексом строки, поэтому вы можете сделать return "row" + (meta.row + 1) это делает + 1 к номеру индекса.

В качестве альтернативы вы можете использовать параметр функции с аргументом мета.строка, чтобы получить правильный номер строки во время инициализации таблиц данных.

This meta works since version 1.10.1

Ссылка: столбцы.данные , столбцы.рендер

{ 
  "title" : "Row No.",
  "data": function ( row, type, val, meta ) {
    return "row"+ (meta.row+1);
  }
},

См. Пример ниже:

var dataSet = [
  ["Airi Satou", "Accountant", "Tokyo"],
  ["Angelica Ramos", "Chief Executive Officer (CEO)", "London"],
  ["Gavin Joyce", "Developer", "Edinburgh"],
  ["Jennifer Chang", "Regional Director", "Singapore"],
  ["Brenden Wagner", "Software Engineer", "San Francisco"],
  ["Fiona Green", "Chief Operating Officer (COO)", "San Francisco"],
  ["Shou Itou", "Regional Marketing", "Tokyo"],
  ["Martena Mccray", "Post-Sales support", "Edinburgh"],
  ["Unity Butler", "Marketing Designer", "San Francisco"]
];

 $(document).ready(function() {
 
  $('#example').DataTable( {
      data: dataSet,
       "columns": [
        { "title" : "Row No.",
          "data": function ( row, type, val, meta ) {
            return "row"+ (meta.row+1);
          }
        },
        { "data": 0,"title": "Name"}, 
        { "data": 1,"title": "Position"}, 
        { "data": 2,"title": "Office"}
    ]
  } );
  
} );
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src = "https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link href = "https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel = "stylesheet" />

<table id = "example" class = "display" width = "100%"></table>

Спасибо! никогда раньше не смотрел на метапараметр - обновил jsfiddle с вашим исправлением

scriptgurus 28.07.2019 20:25

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