DataGrid列宽随内容自动调整问题

打开页面的时候DataGrid列宽会随着内容自动调整,我现在想在内容变化后再自动调整列宽,比如点查询或者新增,修改后再根据内容调整列宽,有提供对应的API吗

可以用 DataGrid.Column::setWidthAuto

// 注入 DataGrid
@Autowired
private DataGrid<Product> highPriceTable;

// 监听 DC 内容的变化
@Subscribe(id = "productDc", target = Target.DATA_CONTAINER)
public void onProductDcCollectionChange(CollectionContainer.CollectionChangeEvent<Product> event) {
    setGridColumnAuto("name"); // 设置自动调整 “name” 列的列宽。
}

private void setGridColumnAuto(String... columnNames) {
    Stream.of(columnNames).map(highPriceTable::getColumn)
            .filter(Objects::nonNull)
            .forEach(DataGrid.Column::setWidthAuto);
}

试了下,调用DataGrid.Column::setWidthAuto后,宽度还是没变化

我这边是可以的:
dg

方便上传一个测试项目?

按你的操作尝试了下,如果手动拖动了一下列宽,再查询会自动展开。如果打开页面后没拖动列宽,直接新增或编辑内容,列宽是没变化的

那你在 AfterShow 里面也加上:

@Subscribe
public void onAfterShow(AfterShowEvent event) {
    setGridColumnAuto("name");
}

这样还是不行吧。不过大概知道原因了,必须得先至少把某一列设为固定宽度,再设置为自动列宽才会生效,我再想想怎么做合适。