<!DOCTYPE html>
<html>
  <head>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<link href="https://nightly.datatables.net/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/js/jquery.dataTables.js"></script>
<link href="https://nightly.datatables.net/select/css/select.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/select/js/dataTables.select.js"></script>
<link href="https://nightly.datatables.net/scroller/css/scroller.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/scroller/js/dataTables.scroller.js"></script>
        
    
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
  </head>
  <body>
    <div class="container">
      <table id="example" class="display nowrap" width="100%">
        <thead>
          <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
          </tr>
        </thead>
        <tbody>
        </tbody>
      </table>
    </div>
    <div id="counter">
    </div>
  </body>
</html>
 
 
body {
  font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  color: #333;
  background-color: #fff;
}
 
var dataSet = [
    ['Tiger Nixon', 'System Architect', 'Edinburgh', '5421', '2011/04/25', '$320,800'],
    ['Garrett Winters', 'Accountant', 'Tokyo', '8422', '2011/07/25', '$170,750'],
    ['Ashton Cox', 'Junior Technical Author', 'San Francisco', '1562', '2009/01/12', '$86,000'],
    ['Cedric Kelly', 'Senior Javascript Developer', 'Edinburgh', '6224', '2012/03/29', '$433,060'],
    ['Airi Satou', 'Accountant', 'Tokyo', '5407', '2008/11/28', '$162,700'],
    ['Brielle Williamson', 'Integration Specialist', 'New York', '4804', '2012/12/02', '$372,000'],
    ['Herrod Chandler', 'Sales Assistant', 'San Francisco', '9608', '2012/08/06', '$137,500'],
    ['Rhona Davidson', 'Integration Specialist', 'Tokyo', '6200', '2010/10/14', '$327,900'],
    ['Colleen Hurst', 'Javascript Developer', 'San Francisco', '2360', '2009/09/15', '$205,500'],
    ['Sonya Frost', 'Software Engineer', 'Edinburgh', '1667', '2008/12/13', '$103,600'],
    ['Jena Gaines', 'Office Manager', 'London', '3814', '2008/12/19', '$90,560'],
    ['Quinn Flynn', 'Support Lead', 'Edinburgh', '9497', '2013/03/03', '$342,000'],
    ['Charde Marshall', 'Regional Director', 'San Francisco', '6741', '2008/10/16', '$470,600'],
    ['Haley Kennedy', 'Senior Marketing Designer', 'London', '3597', '2012/12/18', '$313,500'],
    ['Tatyana Fitzpatrick', 'Regional Director', 'London', '1965', '2010/03/17', '$385,750'],
    ['Michael Silva', 'Marketing Designer', 'London', '1581', '2012/11/27', '$198,500'],
    ['Paul Byrd', 'Chief Financial Officer (CFO)', 'New York', '3059', '2010/06/09', '$725,000'],
    ['Gloria Little', 'Systems Administrator', 'New York', '1721', '2009/04/10', '$237,500'],
    ['Bradley Greer', 'Software Engineer', 'London', '2558', '2012/10/13', '$132,000'],
    ['Dai Rios', 'Personnel Lead', 'Edinburgh', '2290', '2012/09/26', '$217,500'],
    ['Jenette Caldwell', 'Development Lead', 'New York', '1937', '2011/09/03', '$345,000'],
    ['Yuri Berry', 'Chief Marketing Officer (CMO)', 'New York', '6154', '2009/06/25', '$675,000'],
    ['Caesar Vance', 'Pre-Sales Support', 'New York', '8330', '2011/12/12', '$106,450'],
    ['Doris Wilder', 'Sales Assistant', 'Sydney', '3023', '2010/09/20', '$85,600'],
    ['Angelica Ramos', 'Chief Executive Officer (CEO)', 'London', '5797', '2009/10/09', '$1,200,000'],
    ['Gavin Joyce', 'Developer', 'Edinburgh', '8822', '2010/12/22', '$92,575'],
    ['Jennifer Chang', 'Regional Director', 'Singapore', '9239', '2010/11/14', '$357,650'],
    ['Brenden Wagner', 'Software Engineer', 'San Francisco', '1314', '2011/06/07', '$206,850'],
    ['Fiona Green', 'Chief Operating Officer (COO)', 'San Francisco', '2947', '2010/03/11', '$850,000'],
    ['Shou Itou', 'Regional Marketing', 'Tokyo', '8899', '2011/08/14', '$163,000'],
    ['Michelle House', 'Integration Specialist', 'Sydney', '2769', '2011/06/02', '$95,400'],
    ['Suki Burks', 'Developer', 'London', '6832', '2009/10/22', '$114,500'],
    ['Prescott Bartlett', 'Technical Author', 'London', '3606', '2011/05/07', '$145,000'],
    ['Gavin Cortez', 'Team Leader', 'San Francisco', '2860', '2008/10/26', '$235,500'],
    ['Martena Mccray', 'Post-Sales support', 'Edinburgh', '8240', '2011/03/09', '$324,050'],
    ['Unity Butler', 'Marketing Designer', 'San Francisco', '5384', '2009/12/09', '$85,675'],
   
];
 
var mytable = new DataTable('#example', {
   dom: 'Plfrtip',
   paging: false,
    scrollCollapse: true,
    scrollY: '45vh',
    columnDefs: [
      {
        title: 'Name' ,
        targets: [0]
      },
      {
        title: 'Position' ,
        targets: [1]
      },
      {
        title: 'Office' ,
        targets: [2]
      },
      {
        title: 'Extn.' ,
        targets: [3]
      },
      {
        title: 'Start date' ,
        targets: [4]
      },        
      {
        title: 'Salary' ,
        targets: [5]
      },        
    ],
    select: {
        style: 'single',
    },
    data: dataSet
});
//////////////////////////////
//
// Need to maintain scrolled postion AFTER data is updated/reloaded. 
//
//////////////////////////////
var counter = 0;
setInterval(myTimer,5000); 
function myTimer() {
  
  var table = $('#example').DataTable();
  var info = table.page.info();
  console.log("Page Info record is: " +(info.start+1));  //This works with pagination set to true
  var topRowInView = info.start+1;
  
  var displayIndexes = $('#example').DataTable().scroller.page(); 
  console.log("Display Indexes: " + displayIndexes); //This returns as undefined
  
  
  //maintain scroll position on reload
  scrollPos = $('#example').DataTable().scroller().pixelsToRow($('#example_wrapper > div.dataTables_scroll > div.dataTables_scrollBody').scrollTop());
  console.log("ScrollPos: " + scrollPos);  //This returns as undefined
 
  //clear data, add new data
  //$('#example').DataTable().row().scrollTo(topRowInView, true); //This works with pagination set to true
  
  //$('#example').DataTable().clear().rows.add(dataSet).draw().scroller.toPosition(topRowInView, true); //resets to `1st record
 
  $('#example').DataTable().clear().rows.add(dataSet).draw().row().scrollTo(topRowInView, true); //resets to `1st record
  
     
  //increment counter
  counter++;
  $("#counter").text("Processed " + counter + " updates so far.");
  
} 
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers