Dojo dGrid/dStore实时更新

Dojo dGrid/dStore realtime update

本文关键字:实时更新 dStore dGrid Dojo      更新时间:2023-09-26

我一直在尝试实时获取我的dgrid/dstore网格。据我所知,函数"Observable"已被弃用,而且它对我也不起作用

我试图通过间隔计时器更新网格,但随后整个网格被擦除并加载新网格。如何在不擦除和显示"加载数据"的情况下更新整个网格"内联"?

这是我的基本代码:

var timer = setInterval(function() {
  store.invalidate(); // Invalidate the cache
  store.fetch(); // Perform a new request for all items
  grid.refresh(); 
}, 500);

Observable在dstore中不存在,但可以使用Trackable mixin。至于在从存储中获取新内容时更新网格,可以使用dstore/Cache,然后将混合在Trackable中的缓存Memory存储传递给网格以供使用。每次向缓存存储添加新数据时,它也会反映在网格中。

require([
    'dgrid/OnDemandGrid',
    'dstore/Rest',
    'dstore/Memory',
    'dstore/Trackable',
    'dstore/Cache',
    'dojo/domReady!'
], function (OnDemandGrid, Rest, Memory, Trackable, Cache) {
    var restStore = new Rest({
        target: '/mockRequest/'
    });
    var store = Cache.create(restStore, {
        cachingStore: new (Memory.createSubclass(Trackable))()
    });
    var grid = new OnDemandGrid({
        collection: store.cachingStore,
        columns: {
            id: 'ID',
            name: 'Name',
            description: 'Description'
        },
        loadingMessage: 'Loading...'
    }, 'main');
    grid.startup();
    setInterval(function () {
        store.fetch();
    }, 2000);
});