GWT MaterialDataTable水平滚动条异常:重新加载后消失,如何始终显示?
解决GWT MaterialDataTable搜索后水平滚动条消失的问题
方法一:数据加载完成后手动触发表格重绘
在搜索操作完成、表格数据更新完毕后,调用表格的重绘/布局方法,强制组件重新计算滚动条状态:
// 假设table是你的MaterialDataTable实例 table.redraw(); // 如果redraw无效,试试触发窗口resize事件(模拟窗口调整的效果) Window.fireEvent(new ResizeEvent(Window.getClientWidth(), Window.getClientHeight()));
方法二:调整高度时强制刷新滚动条样式
在你的continuousAdaptTableHeight定时器方法里,设置完表格高度后,手动重置容器的overflow属性,确保水平滚动条始终可见:
// 设置高度之后添加以下代码 Element tableElement = genericListPresenter.getTable().asWidget().getElement(); tableElement.getStyle().setOverflowX(Overflow.AUTO); // 若需要始终显示滚动条(不管内容宽度),可替换为: // tableElement.getStyle().setOverflowX(Overflow.SCROLL);
方法三:给表格容器添加固定CSS样式
修改布局代码,给MaterialPanel添加自定义样式,强制容器保持水平滚动条的显示规则:
<g:HTMLPanel> <div style="clear:both;"></div> <m:MaterialPanel styleName="table-scroll-container"> <m:table.MaterialDataTable ui:field="table" shadow="1" height="440px"/> </m:MaterialPanel> </g:HTMLPanel>
对应的CSS样式:
.table-scroll-container { width: 100% !important; overflow-x: auto !important; }
原理说明:搜索重新加载数据后,表格的内容宽度计算未触发浏览器的滚动条重绘,而窗口resize事件会触发组件的布局重计算。通过手动触发重绘、强制overflow属性,就能让水平滚动条始终保持可见。
内容的提问来源于stack exchange,提问作者Hansjörg Hofer
相关产品推荐
相关产品推荐

