gpt4 book ai didi

event-handling - EXTJS 分页工具栏的按钮中是否有任何事件处理程序?

转载 作者:行者123 更新时间:2023-12-04 08:25:18 26 4
gpt4 key购买 nike

我是 EXTJS 4 和这个论坛的新手。对不起,如果它已经在另一个线程中讨论过,但我没有找到它。

我的问题是,我希望带分页的网格面板每 10 秒更新一次它的存储。我找到了使用 userStore.loadPage(current_page) 的解决方案,但它有问题。

有时,几乎在用户单击分页中的“下一步”或“上一步”的同时更新网格面板。这使网格面板无法正常工作。我想要的是,当我单击“下一个”或“上一个”或“刷新”时,上一个请求( userStore.loadPage(current_page) )被中止。所以它不会干扰我当前的请求。

但是我没有在 EXTJS Paging Toolbar 中找到处理“next”、“prev”或“refresh”按钮的事件。这个问题的解决方案是什么?有什么办法吗?

这是我的代码仅供引用:

// create User Store
var userStore = Ext.create('Ext.data.Store', {
model: 'EDC',
autoLoad: true,
pageSize: 10,
proxy: {
type: 'ajax',
url : 'Monitoring', // it is using Java servlet, so I write it this way
reader: {
type: 'json',
root: 'edc',
totalProperty: 'total'
}
}
});

// create Grid Panel
Ext.create('Ext.grid.Panel', {
store: userStore,
width: 800,
height: 400,
columns: [
{
text: "ID",
width: 50,
dataIndex: 'id'
},
{
text: 'Serial Number',
flex: 1,
dataIndex: 'sn'
}
// etc...
],
dockedItems: [{
xtype: 'pagingtoolbar',
store: userStore,
dock: 'bottom',
displayInfo: true
}]
});

每 10 秒更新一次

// after on Ready, reload every 10 seconds
Ext.onReady(function(){
self.setInterval("reloadCurrentEdc()", 10000);
});

// function for update
function reloadCurrentEdc(){
if(typeof userStore != 'undefined'){
userStore.loadPage(userStore.currentPage);
}
}

最佳答案

我认为您的问题是您的“自动加载”和“手动加载”非常接近,以至于您的网格将第一个请求返回的结果作为第二个请求处理。

我同意 Alshten 的观点,最好的方法是 避免 如此接近的请求,您可以通过在已经有正在进行的存储加载时禁用存储加载来做到这一点。但如果你想要你的功能,我认为你可以做这样的事情:

beforeload( Ext.data.Store store, Ext.data.Operation operation, Object eOpts )店内事件,保存eOpts ;听 load( Ext.data.Store this, Ext.util.Grouper[] records, Boolean successful, Ext.data.Operation operation, Object eOpts )将 eOpts 与您保存的进行比较,如果它们不相同,您就知道这不是您想要的结果。

关于event-handling - EXTJS 分页工具栏的按钮中是否有任何事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7805440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com