javascript - How a grid works when passed to the next page? -
assuming have 500 rows of data , within grid showing 40 rows per page. been thinking how grid works 500 rows display next page data correspond.?
i have 2 options .... 1 first make single queryto bd, , keep 500 rows in memory , work there , cut each time pass page.
2nd second, run query database, cut show necessary rows , display. , every time pass page make new query, bringing 500 , go cutting data , showing needed.
so question ideal operation should have grid handle data? making best use in performance.
if try take @ more general case, there n rows in dataset , need show m on page, clear n big enough, in cases, not make sense load data in memory ( might in order warm cache etc )
so loading 1 page @ time database, passing pagenumber
, pagesize
parameters query.
also might use client side caching , save old page when navigating new one. having localstorage, websql etc in browser makes easy.
function getnewpage(pagenumber, pagesize) { var cachekey = pagenumber + '_' + pagesize if (mycache.contain(cachekey)) { return $.deferred().resolve(mycache.get(cachekey)) } return $.ajax( url , { pagesize:pagesize, pagenumber: pagenumber }, function (data) { mycache.set(cachekey, data) return data } ) } var mycache = { contain: function(key) { return !!sessionstorage.getitem(key) }, get: function(key) { return json.parse(sessionstorage.getitem(key) }, set: function(key, o) { sessionstorage.setitem(key, json.stringify(o)) } }
and somewhere in button click handler:
getnewpage(0,10).done(function(data) { var template = _.template('<tr><td>{field1}</td><td>{field2}</td></tr>') $mytabletbody.html(data.map(template)) })
Comments
Post a Comment