1
我有两个通过PL/SQL返回函数动态创建的经典报表。每个报告的数据通常包含相同的数据,但其列名通常是不同的。如何在Oracle Apex中动态设置列宽
我希望它们垂直对齐,但列名称的差异会使列宽不同。我的目标是将每列宽度设置为第一个或第二个报告列的较大值,即每列。我想我会找到每个列长度中的较大值以及一个设置像素量的倍数。
但是,我将如何动态设置列宽,首先要动态生成报告?
我有两个通过PL/SQL返回函数动态创建的经典报表。每个报告的数据通常包含相同的数据,但其列名通常是不同的。如何在Oracle Apex中动态设置列宽
我希望它们垂直对齐,但列名称的差异会使列宽不同。我的目标是将每列宽度设置为第一个或第二个报告列的较大值,即每列。我想我会找到每个列长度中的较大值以及一个设置像素量的倍数。
但是,我将如何动态设置列宽,首先要动态生成报告?
您可以使用内置于APEX中的jQuery库,通过一些Javascript来做到这一点。
(警告:我的JavaScript是不是世界上最优雅的)
这为我工作:
1)在该页面的“函数和全局变量声明”属性创建此功能:
function setColWidths(colId) {
var maxWidth = 0;
$('th#'+colId).each (function (index) {
w = $(this).width();
maxWidth = Math.max(maxWidth,w);
});
$('th#'+colId).each (function (index) {
$(this).width(maxWidth);
});
}
2)在“执行时页负载”页面的属性调用每列的函数:
setColWidths('COL01');
setColWidths('COL02');
setColWidths('COL03');
您或许可以增强此解决方案,以便您不必为每个列显式调用该函数。
太棒了!谢谢@TonyAndrews。快速提问:我的网页实际上有三份报告,一份主要的投资者关系报告,以及我在这个问题中询问的两份经典报告。这两个经典报告位于顶部,或者排在第一位,主要的投资者关系报告会在稍后发布。为什么此代码不考虑IR报告?我想知道你的代码是否会把所有东西搞砸,因为IR报告中的列名要长得多,但没有,它完美地工作。我甚至在函数中添加了另一个$('th#'+ colId).each ...也看看它是否会产生影响,但它没有。 -Matthew Moisen –
IR的列别名可能不是COL01,COL02等。我刚创建了一个带有列别名COL01,COL02的IR,它工作正常。 –
你是对的,我的IR是从一个集合动态创建并生成COL01 ..列,但我忘记了我也有动态生成的报表属性,因此没有TH#colId。再次感谢! –