我有两个从 PL/SQL 返回函数动态创建的经典报告。每个报表的数据一般都包含相同的数据,但它们的列名一般不同。
我希望它们垂直对齐,但列名的差异使列宽不同。我的目标是将每列的每列宽度设置为第一个或第二个报告的列中的较大值。我想我会找到每列长度中的较大者,并为此设置一个像素量。
但是,对于动态生成的报告,我将如何首先动态设置列宽?
我有两个从 PL/SQL 返回函数动态创建的经典报告。每个报表的数据一般都包含相同的数据,但它们的列名一般不同。
我希望它们垂直对齐,但列名的差异使列宽不同。我的目标是将每列的每列宽度设置为第一个或第二个报告的列中的较大值。我想我会找到每列长度中的较大者,并为此设置一个像素量。
但是,对于动态生成的报告,我将如何首先动态设置列宽?
您可以使用内置于 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');
您也许可以增强此解决方案,以便您无需为每一列显式调用该函数。