javascript - Cannot reload data in Fuelux Datagrid -


i have tried reload data populated ajax call cant work, shows old data after using reload method. thing if change variables populate different data , try call following code without refreshing page not reload updated data =/ here code:

function populatedatagrid() {    $.ajaxsetup({async: false});     var gridinfo="";    $.post("lib/function.php",{activity: activity, shift: shift, date: date},        function (output){          gridinfo = json.parse(output);    });    $.ajaxsetup({async: true});      // initializing datagrid         var datasource = new staticdatasource({           columns: [             {               property: 'id',               label: '#',               sortable: true             },             {               property: 'date',               label: 'date',               sortable: true             },             ....           ],            formatter: function (items) {                 var c=1;               $.each(items, function (index, item) {                 item.select = '<input type="button" id="select'+c+'" class="select btn" value="select" onclick="">';                 c=c+1;               });           },             data: gridinfo,             delay:300         });          $('#grid').datagrid({           datasource: datasource         });          $('#grid').datagrid('reload');          $('#modal-fast-appointment-results').modal({show:true}); } 

i found solution... had create new datasource (lets call "ajaxdatasource") , add ajax request functionality within data constructor:

(function (root, factory) {     if (typeof define === 'function' && define.amd) {         define(['underscore'], factory);     } else {         root.ajaxdatasource = factory();     } }(this, function () {      var ajaxdatasource = function (options) {         this._formatter = options.formatter;         this._columns = options.columns;         this._delay = options.delay || 0;         this._data = options.data;     };      ajaxdatasource.prototype = {          columns: function () {             return this._columns;         },          data: function (options, callback) {             var self = this;              settimeout(function () {                 var data;                 $.ajax({                     url: 'getdata.php',                     type: 'post',                     data: 'param1:param1,param2,param2,...,paramn:paramn', // optional in case have send params getdata.php                     datatype: 'json',                     async: false,                     success: function(result) {                         data = result;                     },                     error: function(data){                         //in case want debug , catch possible error                         // console.log(data);                     }                 });                                      // searching                 if (options.search) {                     data = _.filter(data, function (item) {                         var match = false;                          _.each(item, function (prop) {                             if (_.isstring(prop) || _.isfinite(prop)) {                                 if (prop.tostring().tolowercase().indexof(options.search.tolowercase()) !== -1) match = true;                             }                         });                          return match;                     });                 }                   var count = data.length;                  // sorting                 if (options.sortproperty) {                     data = _.sortby(data, options.sortproperty);                     if (options.sortdirection === 'desc') data.reverse();                 }                  // paging                 var startindex = options.pageindex * options.pagesize;                 var endindex = startindex + options.pagesize;                 var end = (endindex > count) ? count : endindex;                 var pages = math.ceil(count / options.pagesize);                 var page = options.pageindex + 1;                 var start = startindex + 1;                  data = data.slice(startindex, endindex);                  if (self._formatter) self._formatter(data);                  callback({ data: data, start: start, end: end, count: count, pages: pages, page: page });              }, this._delay)         }     };      return ajaxdatasource; })); 

after defining new datasource, need create , call datagrid usual:

function populatedatagrid(){  // initializing datagrid         var datasource = new ajaxdatasource({           columns: [             {               property: 'id',               label: '#',               sortable: true             },             {               property: 'date',               label: 'date',               sortable: true             },             ....           ],            formatter: function (items) { // in case want add customized items, example button                 var c=1;               $.each(items, function (index, item) {                 item.select = '<input type="button" id="select'+c+'" class="select btn" value="select" onclick="">';                 c=c+1;               });           },             delay:300         });          $('#grid').datagrid({           datasource: datasource         });          $('#grid').datagrid('reload');          $('#modal-results').modal({show:true}); } 

so have our datagrid data populated via ajax request ability reload data without refreshing page.

hope helps someone!


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -