如何在ajax网格中使用数据刷新作为触发器

How to use data refresh in ajax grid as a trigger?

本文关键字:刷新 数据 触发器 ajax 网格      更新时间:2023-09-26

在CF9 (ext js 3.1)我有一个绑定网格,由ajax调用填充,基于一个选择框的值。select的onChange事件触发一个js函数。在这个函数中,我试图在网格刷新事件上设置一个触发器,以执行一些其他代码。我试过渲染后,重新配置,加载,没有工作:没有得到一个错误,但功能没有被触发。如果我将事件更改为网格刷新后发生的事情,如grid. addevents ('click'),它可以正常工作。我错过了什么?

function myFunc(val) {
// ... some other code ...
  ColdFusion.Grid.refresh('myGrid',true);
  var grid = ColdFusion.Grid.getGridObject('myGrid');
  grid.addEvents('reconfigure'); 
  grid.on('reconfigure',function(){ 
    alert("Grid changed!");
  });           
}

看起来ColdFusion.Grid.refresh('myGrid',true)开始异步执行,函数的其余部分继续运行,它可以在网格之前执行。刷新完成。

我将我的触发代码移动到一个不同的函数中,并添加了一个延迟,我对此并不完全满意,因为ajax调用也可能延迟超过一秒。如果有人有更好的主意,我很乐意告诉你。

function myFunc(val) {
  // ... some other code ...
  ColdFusion.Grid.refresh('myGrid',true);
  myVar = setInterval(myOtherFunc,1000);
}
function myOtherFunc() {
  var grid = ColdFusion.Grid.getGridObject('myGrid');
  // add whatever code is needed
}