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

时间:2014-05-12 17:39:44

标签: javascript ajax coldfusion coldfusion-9

在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!");
  });           
}

1 个答案:

答案 0 :(得分:0)

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

我将触发的代码移动到另一个函数并添加了一个延迟,并不完全满意,因为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
}