当Vaadin网格的HeightMode为CSS时,如何在向下滚动(非编程)到之前隐藏的行时重新计算列宽

当Vaadin网格的HeightMode为CSS时,如何在向下滚动(非编程)到之前隐藏的行时重新计算列宽,vaadin,vaadin7,Vaadin,Vaadin7,我的应用程序类似于(请在访问此链接后单击登录)。因此,我所有的迷你仪表板项目都围绕着一个高度为300px的抽象组件。其中一项是围绕这个300px高度的抽象组件的网格 我的客户不喜欢看到一根大柱子,并且.v-grid-cell会切断他的手机: text-overflow: ellipsis; 因此,在我的瓦丁网格的@PostConstruct中(以及我处理容器的任何地方),我有 以减轻客户的担忧。我告诉他他可以调整列的大小,但他不满意 当我的容器大小很小时,大多数行都是可见的,因此列宽是完美的。

我的应用程序类似于(请在访问此链接后单击登录)。因此,我所有的迷你仪表板项目都围绕着一个高度为300px的抽象组件。其中一项是围绕这个300px高度的抽象组件的网格

我的客户不喜欢看到一根大柱子,并且.v-grid-cell会切断他的手机:

text-overflow: ellipsis;
因此,在我的瓦丁网格的@PostConstruct中(以及我处理容器的任何地方),我有

以减轻客户的担忧。我告诉他他可以调整列的大小,但他不满意

当我的容器大小很小时,大多数行都是可见的,因此列宽是完美的。当我有很多行时,我必须滚动。列宽是基于初始可见行的集合计算的。当我向下滚动时,如果一个新可见的行有一个大的列,那么该列将被切断

我可以通过使用HeightMode.ROW来缓解问题,并将父组件设置为滚动面板,如:

panel.setWidth("100%");
panel.setHeight("310px");
但是我的网格的页脚行有很多操作,所以我不希望我的用户必须滚动到底部才能看到页脚,如果行大小是100。因此,我的网格具有默认值HeightMode->HeightMode.CSS。我喜欢。它始终显示我的HeaderRow和FooterRow,并仅滚动网格中的行部分

我试过什么:

  • 给每一列赋予巨大的尺寸或膨胀比。客户拒绝了

  • 我尝试为scroll事件添加侦听器,但未成功。我使用了类似的方法。我无法打开滚动侦听器

  • ScrollingGrid.java:

    public class ScrollingGrid extends Grid{
    
    
    List<ScrollingGridScrollListener> listeners = new ArrayList<ScrollingGridScrollListener>();
    
    private void fireSrollEvent() {
        for (ScrollingGridScrollListener listener : listeners) {
            listener.doGridScroll();
        }
    }
    
    public void addScrollListener(ScrollingGridScrollListener listener) {
        listeners.add(listener);
    }
    
    @Override
    public void beforeClientResponse(boolean initial) {
        super.beforeClientResponse(initial);
        fireSrollEvent();
    }
    
    在我的网格中:

      addScrollListener(this);
    

    我在页面加载时看到通知。也许我不应该在网格中重写beforeClientResponse方法。但我不知道覆盖什么方法来实现滚动侦听器

    请帮助我找出这个滚动侦听器,或者如果有其他方法可以获得滚动上重新计算的列宽,请让我知道

    谢谢你阅读这个很长的问题


    版本:7.6.8

    首先,你所说的大栏是什么意思??你是说宽吗?@AhmadHajjar是的。大宽度。嘿,我知道已经有一段时间了,但你找到解决办法了吗?我们在这里遇到了同样的问题:-/@daPhantom,趁你能逃出瓦丁。如果没有,请尝试升级到8或支付Vaadinsupport@MahendranAyyarsamyKandiar我已经跑得很快了:]首先,你说的大栏是什么意思??你是说宽吗?@AhmadHajjar是的。大宽度。嘿,我知道已经有一段时间了,但你找到解决办法了吗?我们在这里遇到了同样的问题:-/@daPhantom,趁你能逃出瓦丁。如果没有,请尝试升级到8或支付Vaadinsupport@MahendranAyyarsamyKandiar我已经跑得尽可能快了:]
     public interface ScrollingGridScrollListener {
          public void doGridScroll();
     }
    
      addScrollListener(this);
    
     @Override
    public void doGridScroll() {
    
        Notification.show("You are scrolling!\nYou can add your own behavior here!");
        this.recalculateColumnWidths();
    }