在服务器上插入记录后,EXTJS 中的自动刷新网格

Posted

技术标签:

【中文标题】在服务器上插入记录后,EXTJS 中的自动刷新网格【英文标题】:Auto Refresh Grid in EXTJS after a record is Inserted on server 【发布时间】:2017-09-15 10:28:24 【问题描述】:

我正在使用 EXTJs4,并且我只想在将记录插入数据库后重新加载网格。目前我正在使用任务运行器每 1 分钟重新加载一次商店。 这是示例:

var store = grid.getStore();    
var refreshTask =              
    run: function() 
        store.reload();
    ,
    interval: 60 * 1000 
;

Ext.util.TaskRunner.start(refreshTask);

我不确定如何编写一个仅在将数据插入数据库时​​重新加载的函数?

【问题讨论】:

你可以使用 async/await 来实现你的目标 行是如何插入的?通过您的应用或其他用户使用其他方式? @LorenzMeyer ,其他用户正在插入记录。在他们上传记录后,值被插入到表中,并且只有在插入之后我的页面才会使用新记录自动刷新。 【参考方案1】:

一旦发生变化,有多种方法可以从服务器获得即时响应,最兼容的是所谓的“Hanging Request”。

您所做的是向服务器发送请求,而服务器不会立即响应。相反,服务器会等到发生更改(它让请求“挂起”,因此得名),并且仅在此之后或在预定义的超时之后发送回复。 (显然,您的服务器端代码必须支持这种行为)。

这不能用store.load或客户端其他存储功能实现;您将不得不使用Ext.Ajax.request 并手动评估响应,例如从请求回调中调用store.loadRawData 将更改的记录加载到存储中。

【讨论】:

以上是关于在服务器上插入记录后,EXTJS 中的自动刷新网格的主要内容,如果未能解决你的问题,请参考以下文章

EXTJS 5.0:无限网格滚动不适用于商店中的 extraParams

使用 extjs 网格并行执行

以编程方式将记录添加到 ExtJS 中的网格后切换单元格编辑器

在编辑主网格行时,rowBody 刷新丢失内部网格。 extjs 3..我可以重新渲染内部网格..吗?

选项卡内的 EXTJS 网格 - 过滤器仅适用于页面刷新

如何告诉 ExtJS Grid 编辑过的数据已经同步?