【问题标题】:DataTable plugin using aurelia updating data使用 aurelia 更新数据的 DataTable 插件
【发布时间】:2019-04-23 03:16:39
【问题描述】:

我在 Aurelia 中使用 DataTablesDatePicker 插件。 我基本上希望用户选择一个日期并让数据表呈现该日期的数据,但是使用我当前的代码,一旦数据更改,数据表似乎就会出现问题。一旦数据更改数据表插件上的格式似乎关闭并且排序,滚动按钮不起作用。 我尝试在 jsfiddle 上添加日期选择器,但我没有运气,因为您必须向 package.json 添加一些配置,而我似乎无法弄清楚。如果有人可以提供任何提示,我将不胜感激。如果您有任何问题,请告诉我

 pickerChanged() {
    this.picker.events.onChange = (e) => {
      this.data = [];
      let inputDate = new Date(e.date.format('YYYY-MM-DD') + ' 00:00');
      let data = (demoData as any).default;
      for (let row of data) {
        let rowDate = new Date((row as any).date);
        if (inputDate.getTime() >= rowDate.getTime()) {
          this.data.push(row);
        }
      }
      console.log(4444, this.data);
        $(document).ready(function() {
          $('#dataTable').DataTable( {
            "scrollY": "280px",
            "scrollCollapse": true,
            "paging":false,
            "searching": false,
            "info": false,
            "language": {
              "emptyTable": " "
            }
          } );
        } );
    };
  }
<abp-datetime-picker element.bind="picker"></abp-datetime-picker>

<div class="row pt-2">
        <div class="col-12">
          <table class="table" id="dataTable">
            <thead>
            <tr>
              <th>Id</th>
              <th>Name</th>
              <th>Receipt #</th>
              <th>Invoice number</th>
              <th>Date</th>
              <th>Total</th>
              <th>Balance</th>
              <th>Payment</th>
            </tr>
            </thead>
            <tbody>
            <tr repeat.for="row of data">
              <td>${row.id}</td>
              <td>${row.name}</td>
              <td>${row.receiptNumber}</td>
              <td>${row.invoiceNumber}</td>
              <td>${row.date}</td>
              <td>${row.total}</td>
              <td>${row.balance}</td>
              <td>${row.payment}</td>
            </tr>
            </tbody>
          </table>
          <div class="text-center" if.bind="!data.length">No records available. Please select a valid date</div>
        </div>
      </div>

【问题讨论】:

标签: javascript jquery html datatables aurelia


【解决方案1】:

经过几个小时的调查,我终于弄明白了。我的旧代码的问题是,我使用 ${row.id} 将数据传递给数据表,而不是像下面这样将 data 参数与数据表一起使用。

$('#dataTable').DataTable({
        data: this.data,
        columns: [
          { data: 'id' },
          { data: 'name' },
          { data: 'receiptNumber' },
          { data: 'invoiceNumber' },
          { data: 'date' },
          { data: 'total' },
          { data: 'balance' },
          { data: 'payment' },
        ]
      });
<div class="row pt-2">
        <div class="col-12">
          <table class="table" id="dataTable">
            <thead>
            <tr>
              <th>Id</th>
              <th>Name</th>
              <th>Receipt #</th>
              <th>Invoice number</th>
              <th>Date</th>
              <th>Total</th>
              <th>Balance</th>
              <th>Payment</th>
            </tr>
            </thead>
          </table>
        </div>
      </div>

然后在您想要更新数据时调用此函数

$('#dataTable').DataTable().clear().rows.add(this.data).draw();

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2016-08-21
    • 2012-11-02
    相关资源
    最近更新 更多