即使在再次销毁和初始化数据表之后,Datatable也不会更新更新列表上的数据(敲除绑定)。

时间:2018-06-16 15:53:21

标签: javascript html knockout.js datatable binding

我有一个html文件,其中包含一个带有可绑定数组的数据表。单击按钮时,列表中的数据会更新,但数据表不会反映新数据。即使在删除正文并销毁表后,它也不会刷新表。

  <table id="SVRnew" class="display">
  <thead>
     <tr>
     <th>Domain</th>
     <th>Sub Domain</th>
     <th>Event Type</th>
     <th>Event Sub type</th>
     <th>Event Name</th>
     <th>SVR</th>
     <th>Deloitte Capability</th>
     </tr>
</thead>
     <tbody data-bind="foreach : $root.LISTSVREASnew">
      <tr>
          <td class="table-column-ellipses" data-bind="text:DOMAIN"></td>
          <td class="table-column-ellipses" data-bind="text:SUB_DOMAIN"></td>
          <td class="table-column-ellipses" data-bind="text:EVENT_TYPE"></td>
          <td class="table-column-ellipses" data-bind="text:EVENT_SUBTYPE"></td>         <td class="table-column-ellipses" data-bind="text:EVENT_NAME"></td>
          <td class="table-column-ellipses" data-bind="text:SVR"></td>
          <td class="table-column-ellipses" data-bind="text:Deloitte_Capability"></td>
      </tr>
    </tbody>
 </table>

Javascript功能: -

  function ClickAddMapping()
    {
        $('#SVRnew').DataTable().destroy();
        $('#SVRnew tbody tr').remove();
        _dtsvrnew = $('#SVRnew').DataTable({
            scrollY: '30vh',
            scrollCollapse: true,
            paging: false,
            "scrollX": true

        });

        VMHome.LISTSVREASnew([]);
        var selectedevents = ko.computed(function () {
            return VMHome.EventMappingforsvr().filter(function (i) {
                return i.ISSELECTED() === true;
            });
        });

        var selectedsvr = ko.computed(function () {
            return VMHome.SVRList().filter(function (i) {
                return i.ISSELECTED() === true;
            });
        });


            for (var j = 0; j < selectedevents().length; j++)
            {
                for (var k = 0; k < selectedsvr().length; k++)
                {
                    VMHome.LISTSVREASnew().push(new EASSVRModel({ 'SVR': selectedsvr()[k].SVR(), 'DSVRID': selectedsvr()[k].DSVRID(), 'Deloitte_Capability': selectedsvr()[k].Deloitte_Capability(), 'EAS_UID': selectedevents()[j].EAS_UID(), 'DOMAIN': selectedevents()[j].DOMAIN(), 'SUB_DOMAIN': selectedevents()[j].SUB_DOMAIN(), 'EVENT_TYPE': selectedevents()[j].EVENT_TYPE(), 'EVENT_SUBTYPE': selectedevents()[j].EVENT_SUBTYPE(), 'EVENT_NAME': selectedevents()[j].EVENT_NAME() }));
                }
            }

        }

即使在销毁数据表后,它也不会更新数据。 任何解决方案?

1 个答案:

答案 0 :(得分:0)

带有敲除的数据表将无法从框中工作。 您可以查看下一个参考文献:https://datatables.net/forums/discussion/31797/knockout-js-3-4-custom-binding-for-jquery-datatables-netDatatable data binding using knockoutjs

一般情况下,您需要订阅数组的更改,然后在网格中添加(或删除)项目,如下所示:

this.addItem = function (newItem) {
    if (dataTable && dataTable.row && newItem) {
        dataTable.row.add(newItem).draw(false);
    }
};

where datatable:let dataTable = $('#yourTable').DataTable();