2020-10-28 12:39题主

Wb.mask在自动列宽函数之后才生效

参考示例得到了一个自适应列宽的函数如下:
/**
   *列宽根据内容自适应
   */
  autoSize: function(grid) {
    var cols = grid.columns,
      i, j = cols.length;
    Ext.suspendLayouts();
    for (i = 1; i < j; i++) {
      if (cols[i].autoSize) {
        cols[i].autoSize();
        cols[i].setWidth(cols[i].width + (Wb.isNeptune ? 15 : 10));
      }
    }
    Ext.resumeLayouts(true);
  }​
将上述函数放在app初始化init函数中
应用时,在某个grid的上面加了一个"自动列宽"按钮
在按钮上click事件
var tempgrid = app.grid1;
Wb.mask(tempgrid, null, 0);
if (tempgrid && tempgrid.columns) {
  app.autoSize(tempgrid);
  Wb.unmask(tempgrid);
}
发现mask在自动列宽之后才显示,然后瞬间消失。
请问大家:
1是不是因为autoSize函数中存在Ext.suspendLayouts()的原因
2如何在自动列宽开始就显示mask 然后列宽自适应处理结束后在取消mask?
2020-10-29 09:26#1
suspendLayouts()后所有渲染将停止执行
可以把mask放到setTimeout(fn, 0)

返回开发者社区