Observable Array

The Observable Array wraps a JavaScript Array object and tracks changes in the Array.

var observableArray = new $.jqx.observableArray(array, callback)

var observableArray = new $.jqx.observableArray(
    [{name: "Andrew Smith"},
     {name: "Gordon Brown"}], 
    function(changes)
    {
        // handle changes here.
    });

Settings

Example:
 
     $(document).ready(function () {  
       var array = generatedata(2);  
       var updateLog = function (observableArray) {  
         var rows = "";  
         for (var i = 0; i < observableArray.length; i++) {  
           rows += observableArray.toJSON(["firstname", "lastname", "productname", "quantity", "price", "total"], observableArray[i]);  
         }  
         $("#log").html(rows);  
       }  
       var observableArray = new $.jqx.observableArray(array, function (changed) {  
         updateLog(this);  
       });  
       updateLog(observableArray);  
       var source =  
       {  
         localdata: observableArray,  
         datatype: "obserableArray",  
         datafields:  
         [  
           { name: 'firstname', type: 'string' },  
           { name: 'lastname', type: 'string' },  
           { name: 'productname', type: 'string' },  
           { name: 'quantity', type: 'number' },  
           { name: 'price', type: 'number' },  
           { name: 'total', type: 'number' }  
         ]  
       };  
       var dataAdapter = new $.jqx.dataAdapter(source);  
       $("#jqxgrid").jqxGrid(  
       {  
         width: 850,  
         height: 150,  
         source: dataAdapter,  
         sortable: true,  
         columnsresize: true,  
         editable: true,  
         selectionmode: "multiplecellsadvanced",  
         columns: [  
          { text: 'Name', datafield: 'firstname', width: 120 },  
          { text: 'Last Name', datafield: 'lastname', width: 120 },  
          { text: 'Product', datafield: 'productname', width: 180 },  
          { text: 'Quantity', datafield: 'quantity', width: 80, cellsalign: 'right' },  
          { text: 'Unit Price', datafield: 'price', width: 90, cellsalign: 'right', cellsformat: 'c2' },  
          { text: 'Total', datafield: 'total', cellsalign: 'right', cellsformat: 'c2' }  
         ]  
       });  
       $("#addItem").jqxButton();  
       $("#deleteItem").jqxButton();  
       $("#updateItem").jqxButton();  
       $("#updatePath").jqxButton();  
       $("#addItem").click(function () {  
         var row = generatedata(1)[0];  
         observableArray.push(row);  
       });  
       $("#deleteItem").click(function () {  
         if (observableArray.length > 0) {  
           observableArray.splice(0, 1);  
         }  
       });  
       $("#updatePath").click(function () {  
         if (observableArray.length > 0) {  
           var row = generatedata(1)[0];  
           observableArray.set("0.firstname", row.firstname);  
           observableArray.set("0.lastname", row.lastname);  
         }  
       });  
       $("#updateItem").click(function () {  
         if (observableArray.length > 0) {  
           var row = generatedata(1)[0];  
           observableArray.set(0, row);  
         }  
       });  
     });