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

Sapui5 sap.ui.table.table如何优化列宽,sapui5,Sapui5,我到处都找不到这个。在sap.ui.table.table控件中,是否可以告诉它调整所有列宽的大小,以便其内容完全可见?我在表或列实例上都没有看到任何属性/方法 不支持吗 非常感谢。选项1:设置固定的列大小 var oTable = new sap.ui.table.Table({ width : "100%", selectionMode : sap.ui.table.SelectionMode.None, enableColumnFreeze : true, });

我到处都找不到这个。在sap.ui.table.table控件中,是否可以告诉它调整所有列宽的大小,以便其内容完全可见?我在表或列实例上都没有看到任何属性/方法

不支持吗


非常感谢。

选项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:可调整大小,但显示完整的列宽,我会尝试使用这些属性

  • 宽度:sap.ui.core.CSSSize
  • flexible:boolean(默认值:true)
  • 可调整大小:布尔值(默认值: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,
}));
我认为这是一个挑战,我也通过固定尺寸来实现。。最终,您可以根据屏幕大小定义固定大小。。希望能帮助您。

这对我很有用:

我的哥伦布是:

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

$($.find('.sapUiTableColRsz')).trigger(“单击”)

您可以使用
autoResizeColumn(colIndex)
方法

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

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


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

我尝试了几种方法,但没有一种方法真正适用于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);
}
var oTpc=new sap.ui.table.TablePointerExtension(oTable);
var aColumns=oTable.getColumns();
对于(变量i=0;i
对于我来说,我需要在收到数据后调用“autoResizeColumn”。您可以附加到绑定dataReceived事件

抱歉,但恐怕目前还没有内置函数。您必须检查最合适的宽度,并在最初定义它。谢谢。问题是这个表是动态生成的。很难说合适的宽度是多少:)谢谢。看来这个方法是正确的答案。当我问这个问题时,我还认为它不可用。有没有我能找到的
autoResizeColumn(colIndex)
方法的例子?这个方法被标记为“实验”。有人会认为这很快就会贬值吗?@Pille:关于“实验性”API,请查看@user557657中的警告消息,我添加了一个
var oTpc = new sap.ui.table.TablePointerExtension(oTable);
var aColumns = oTable.getColumns();
for (var i = 0; i < aColumns.length; i++) {
  oTpc.doAutoResizeColumn(i);
}