将表水平滚动附加到父容器(sapui5)

时间:2015-04-01 08:19:48

标签: scroll sapui5 horizontal-scrolling

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

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

I我真的没有想法,所以任何帮助,提示都会很棒,谢谢!

更新:我添加了jsFiddle复制页面结构和我的问题。 我必须补充一点,问题是仅在IE (我使用IE11)。

1 个答案:

答案 0 :(得分:3)

如果有其他人遇到这个问题,这就是我找到的解决方案:

1)在包装容器创建时将宽度设置为100%,这样,表格将在所有浏览器上扩展到100%。

2)在表上附加columnResize函数,如下所示:

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

3)在applyScrollOnContainer()上,只需将容器的宽度更改为auto,这样就可以将表scrollBar放在容器上。

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%");
}
相关问题