title: DataTables with multiple data sources
body: <p>I have two source of data. One is from ajax comes from server and the second comes from a websocket live data.
  Below is my html</p>
  <pre><code>&lt;div class=&quot;card-body&quot;&gt;
                          &lt;div class=&quot;table-responsive&quot;&gt;
                              &lt;table id=&quot;TenantsTable&quot; class=&quot;table table-striped table-bordered&quot;&gt;
                                  &lt;thead&gt;
                                      &lt;tr&gt;
                                          &lt;th&gt;@L(&quot;Symbol&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;Pair&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;Fact&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;SignalDate&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;SignalPrice&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;LastPrice&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;Change&quot;)&lt;/th&gt;
                                          &lt;th&gt;@L(&quot;sltp&quot;)&lt;/th&gt;
                                      &lt;/tr&gt;
                                  &lt;/thead&gt;
                                  &lt;tbody&gt;&lt;/tbody&gt;
                              &lt;/table&gt;
                          &lt;/div&gt;
                      &lt;/div&gt;
  </code></pre>
  <p>Below is my datatable</p>
  <pre><code>abp.ajax({
          method: 'POST',
          url: abp.appPath + 'Portfolio/GetSignalsByPeriod/',
          data: JSON.stringify(PeriodId),
          dataType: 'json',
          contentType: 'application/json',
  
      }).done(function (result) {
  
          myData = result;
          var _$tenantsTable = $('#TenantsTable').DataTable({
              datatype: 'json',
              &quot;searching&quot;: true,
              &quot;ordering&quot;: true,
              data: myData,
              columns: [
                  { data: 'symbol' },
                  { data: 'pair' },
                  { data: 'signal' },
                  {
                      data: 'signalDate',
                      render: function (data, type, row) {
                          return moment(new Date(data).toString()).format('DD/MM/YYYY - h:mm:ss');
                      }
  
                  },
                  { data: 'signalPrice' },
                  {
                      title: 'Last Price', data: null,
                      render: function (data, type, row, meta) {
                          return 1
                      }
                  },
                  {
                      title: 'Change', data: null,
                      render: function (data, type, row, meta) {
                          return 2
                      }
                  },
                  {
                      title: 'SL/TP', data: null,
                      render: function (data, type, row, meta) {
                          return 3
                      }
                  },
  
              ],
  
              buttons: [
                  {
                      name: 'refresh-usdt',
                      text: 'USDT',
                      action: function (e, dt, node, config) {
                          dt.column(1).search(&quot;USDT&quot;).draw();
                      }
                  },
                  {
                      name: 'refresh-btc',
                      text: 'BTC',
                      action: function (e, dt, node, config) {
                          dt.column(1).search(&quot;BTC&quot;).draw();
                      }
                  },
              ],
  
          });
  
      })
      let url = 'wss://stream.binance.com:9443/ws/!ticker@arr';
      let ws = new WebSocket(url)
      ws.onmessage = (event) =&gt; {
          var _$tenantsTable = $('#TenantsTable').DataTable();
          var dataWs = JSON.parse(event.data)
          for (let data of dataWs) {
              var selectedRow = _$tenantsTable.rows({ search: data.s }).indexes();
              console.log(selectedRow);
              _$tenantsTable.cell(selectedRow, 5).data(data.c);
          }
         
      }
  </code></pre>
  <p>What I'm trying to do is to fill Last Price, Change and SL/TP column with these live datas. If the symbol and the pair matches the symbol coming from websocket it should display its current price, change and sl/tp. I don't know if there's any better way or easy way of doing this. But I'm stuck.</p>