Объединить данные выпадающего и таблицы данных - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу объединить поле выбора с информацией из выбранных строк в объекте datatables. Моя идея состояла в том, чтобы:

  1. Получить значение выбранной опции (item.id)
  2. получить серийные номера выбранных элементов в объекте datatables
  3. Создать массив, состоящий из item.id и серийных данных datatables [item.id, serial1, serial2 ...] (changevalues)
  4. изменяет значение параметра на объединенное значение с 3, чтобы оно передавалось при нажатии кнопки updateButton

Мне удалось с 1-3, но я допустил некоторую ошибку с 4. Хотя я могу записать вывод в консоль. У кого-нибудь есть идея для меня? Является ли это плохой идеей сделать это так вообще?

мой код выбора:

<div class="container">
    <form action="/itemselect" method="post">
        <div class="row">
            <select class="selectpicker form-control" name="updates_list" id="itemSelector">
            {% for item in items %}
                <option value="{{ item.id }}">{{ item.name }}</option>
            {% endfor %}            
            </select>
            <button class="btn btn-default" name="submit" value="submit" id="updateButton" disabled > Submit</button>
        </div>
    </form> 
</div>

мой ajax вызов для обновления таблиц данных:

$(document).ready(function() {
function getData() {
    $.ajax({

        url: "/refreshLiveTableRoute",
        success: function (data) {

        // Get Datatable API
        var table = $('#live_table').DataTable();

        // Get IDs of selected rows.
        var selected = table.rows({selected: true}).ids().toArray();

        // Add '#' to the IDs of each row
        selected.forEach(function(part, index) {
          this[index] = '#' + this[index];
        }, selected);


        // Clear table.
        table.clear();

        // Add new row data, draw and stay on same page.
        table.rows.add(data).draw(false);

        // Reselect rows based on ID.
        table.rows( selected ).select();

        // this is to give the selected rows to the update button
        table.on( 'select', function () {
            var rowData = table.rows( { selected: true } ).data();

            var rowSerial = [];
            $.each( rowData , function(i, item) {
                rowSerial.push(item.serial);
            });   


            var e = document.getElementById("itemSelector");
            var selectoption = e.options[e.selectedIndex].value;
            var changevalue = [selectoption,rowSerial]
           // console.log(changevalue) 

            $("#itemSelector").change(function() {
                $("#itemSelector option[value=selectoption]").val(changevalue); // <-- not working
            } );

        } );
        });
      }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...