JQuery Grid

Set the virtualmode property of the jqxGrid. Author: http://jqwidgets.com

HTML

<script src="https://jqwidgets.com/public/jqwidgets/jqx-all.js"></script>
<link rel="stylesheet" href="https://jqwidgets.com/public/jqwidgets/styles/jqx.base.css">
<link rel="stylesheet" href="https://jqwidgets.com/public/jqwidgets/styles/jqx.energyblue.css">
<div id='jqxWidget'>
    <div id="jqxgrid"></div>
    <input id="jqxbutton" value="change to normal mode" type="button"/>
</div>

JavaScript

var data = new Array();
 var firstNames = [
     "Andrew", "Nancy", "Shelley", "Regina", "Yoshi", "Antoni", "Mayumi", "Ian", "Peter", "Lars", "Petra", "Martin", "Sven", "Elio", "Beate", "Cheryl", "Michael", "Guylene"];
 var lastNames = [
     "Fuller", "Davolio", "Burke", "Murphy", "Nagase", "Saavedra", "Ohno", "Devling", "Wilson", "Peterson", "Winkler", "Bein", "Petersen", "Rossi", "Vileid", "Saylor", "Bjorn", "Nodier"];
 var productNames = [
     "Black Tea", "Green Tea", "Caffe Espresso", "Doubleshot Espresso", "Caffe Latte", "White Chocolate Mocha", "Cramel Latte", "Caffe Americano", "Cappuccino", "Espresso Truffle", "Espresso con Panna", "Peppermint Mocha Twist"];
 var priceValues = [
     "2.25", "1.5", "3.0", "3.3", "4.5", "3.6", "3.8", "2.5", "5.0", "1.75", "3.25", "4.0"];
 // generate sample data.
 var generatedata = function (startindex, endindex) {
     var data = {};
     for (var i = startindex; i < endindex; i++) {
         var row = {};
         var productindex = Math.floor(Math.random() * productNames.length);
         var price = parseFloat(priceValues[productindex]);
         var quantity = 1 + Math.round(Math.random() * 10);
         row["id"] = i;
         row["firstname"] = firstNames[Math.floor(Math.random() * firstNames.length)];
         row["lastname"] = lastNames[Math.floor(Math.random() * lastNames.length)];
         row["productname"] = productNames[productindex];
         row["price"] = price;
         row["quantity"] = quantity;
         row["total"] = price * quantity;
         data[i] = row;
     }
     return data;
 }
 
 var totalrecords = 10000000;
 
 var source = {
     datatype: "array",
     localdata: {},
     totalrecords: totalrecords
 };
 // load virtual data.
 var rendergridrows = function (params) {
     var data = generatedata(params.startindex, params.endindex);
     return data;
 }
 var totalcolumnrenderer = function (row, column, cellvalue) {
     var cellvalue = $.jqx.dataFormat.formatnumber(cellvalue, 'c2');
    ...