2015-04-01 50 views
2

我有一个包裹在sap.ui.layout.VerticalLayout中的sap.ui.table组件。问题是,如果表格列被重新调整大小(放大),表格将获得一个水平滚动条。到目前为止这么好,但是,我的问题是,如果有任何方法,我可以将表水平滚动条放在父容器上(所以在VerticalLayout组件上),这样用户就不需要滚动行一路下来获得访问水平滚动条。将表格水平滚动到父容器(sapui5)

我已经尝试将垂直布局组件的宽度设置为“自动”,这将得到我想要的行为,但在这种情况下,表不会扩展到页面的100%(它在镀铬工作正常,当IE上存在auto时(IE11在我的情况下)不会100%的问题)。所以基本上,我需要将父级的宽度设置为100%,以便将表格和容器展开到页面的右边距,但是如果需要水平滚动条,则需要在容器上显示,而不是在表。

I我真的没有想法,所以任何帮助,提示,将是伟大的,谢谢!

UPDATE:我加了一个jsFiddle,它复制了页面的结构和我的问题。 我必须补充说,问题是只有在IE(我使用IE11)

+1

在垂直容器内部使用面板,然后在其上放置表格。 – 2015-04-03 02:46:17

+0

@SrikanthKshatriy您好,感谢您的提示。我试过这个解决方案,但问题仍然存在。 – user2271933 2015-04-04 09:11:18

回答

2

在情况下,将面临这样的问题的其他人,这是我找到了解决办法:

1)在包装容器创建组宽度为100%,这样一来,该表将扩大到100%在所有浏览器上。

2)上表附加一个columnResize函数是这样的:

columnResize: function(e){ 
    applyScrollOnContainer(); 
} 

3)在applyScrollOnContainer(),只需将容器的宽度改变为自动,这样的表滚动条将被放置在容器中。

sap.ui.getCore().getElementById("yourContainerIdHere").setWidth("auto"); 

4)您也可以在document.load上添加支票。如果再次显示表格滚动条,则将其附加到容器上。

var scrollDisplay = $("#tableIdhere .sapUiTableHSb").css("display"); 


if(scrollDisplay === "block"){ 
    sap.ui.getCore().getElementById("ORDERS_VIEW_FIRST_TABLE").setWidth("auto"); 
} 
else{ 
    sap.ui.getCore().getElementById("ORDERS_VIEW_FIRST_TABLE").setWidth("100%"); 
}