sap.ui.table.Table如何优化列宽

时间:2014-05-14 09:42:56

标签: sapui5

我无处可寻。在sap.ui.table.Table控件中是否可以告诉它调整所有列宽以使其内容完全可见?我在表或列实例上看不到任何属性/方法。

不支持吗?

非常感谢。

7 个答案:

答案 0 :(得分:4)

您可以使用autoResizeColumn(colIndex)方法

答案 1 :(得分:3)

选项1:设置固定大小的列

var oTable = new sap.ui.table.Table({
    width : "100%",
    selectionMode : sap.ui.table.SelectionMode.None,
    enableColumnFreeze : true,
});

oTable.addColumn(new sap.ui.table.Column({
    template : new sap.ui.commons.TextView({
        text : "{Title}",
        wrapping : true,
        textAlign : sap.ui.core.TextAlign.Begin,
    }),
    enableColumnFreeze : true,
    width : '350px', // also possible in % -> e.g. in ur case '100%'

}));

选项2:可调整大小,但显示完整列宽,我会尝试使用这些属性

  • width:sap.ui.core.CSSSize
  • flexible:boolean(默认值:true)
  • resizable:boolean(默认值:true)
像这样

oTable.addColumn(new sap.ui.table.Column({
    template : new sap.ui.commons.TextView({
        text : "{Title}",
        wrapping : true,
        textAlign : sap.ui.core.TextAlign.Begin,
    }),
    width : '100%',
    resizable : false,
    flexible : false,
}));

我认为这是一个挑战,我也是通过固定尺寸制作的..最终你可以根据屏幕尺寸定义固定尺寸..希望能帮助你。

答案 2 :(得分:3)

这对我有用:

我的专栏是:

flexible: true,
resizable: true,
autoResizable: true,
width : 'auto'

$($找到(' .sapUiTableColRsz'))触发。("单击&#34);

答案 3 :(得分:1)

我尝试了几种方法,但在1.52.23上却没有真正起作用,因此我分析了自动调整大小在双击列分隔符上的工作方式。并找到了隐藏的宝藏:sap.ui.table.TablePointerExtension

这段代码对我有用:

var oTpc = new sap.ui.table.TablePointerExtension(oTable);
var aColumns = oTable.getColumns();
for (var i = 0; i < aColumns.length; i++) {
  oTpc.doAutoResizeColumn(i);
}

答案 4 :(得分:0)

对我来说,我需要在接收到数据后对“ autoResizeColumn”进行调用。您可以将其附加到绑定的dataReceived事件

答案 5 :(得分:-1)

在遇到同样的问题时,我在sap.m.Table控件中找到了解决方案。使用“固定布局”选项(将值设置为false,请参阅附带的文档),可以强制列/单元格根据其内容调整大小(与ALV网格控件中的效果相同)。该API功能在API参考中有很好的描述:sap.m.Table / setFixedLayout

答案 6 :(得分:-1)

var oTable = new sap.m.Table({
    fixedLayout: false
});

定义用于布置表格单元格,行和列的算法。默认情况下,使用固定布局算法呈现表。这意味着水平布局仅取决于表格的宽度和列的宽度,而不取决于单元格的内容。后续行中的单元格不会影响列宽。这允许浏览器比自动表格布局更快地布置表格,因为浏览器可以在分析第一行后开始显示表格。

当此属性设置为false时,将使用自动布局算法呈现sap.m.Table。这意味着,表格及其单元格的宽度取决于单元格的内容。列宽由单元格内最宽的不可破坏内容设置。这会使渲染变慢,因为浏览器需要在确定最终布局之前读取表中的所有内容。注意:由于sap.m.Table没有自己的滚动条,因此将fixedLayout设置为false会强制表溢出,这可能会导致视觉问题。当一个表在宽屏幕中或在水平滚动容器(例如sap.m.Dialog)中有几列来处理溢出时,建议使用此属性。在自动布局模式下,sap.m.Column的width属性将被考虑为最小宽度。